У меня есть новая программа, которую я пишу на C #, она должна будет читать и записывать двоичные файлы, совместимые с двоичным форматом vb6.Я не могу изменить программу vb6, но могу внести изменения в свою программу.
У меня все работает, за исключением того, что я немного сомневаюсь в строках.
Если я напишу следующее в vb6
Private Type PatchRec
string As String
End Type
Private Sub Command1_Click()
Dim intFileNum As Integer
Dim recTest As TestRec
intFileNum = FreeFile
Open "E:\testing" & "\" & "testfile" & ".bin" For Binary Access Write As #intFileNum
recTest.string = "This is a test string"
Put #intFileNum, , recPatch
Close #intFileNum
End Sub
И я пишу следующее на C #
public static void Main(params string[] args)
{
using(var fs = new FileStream("test.bin", FileMode.Create, FileAccess.ReadWrite))
using (var bw = new BinaryWriter(fs))
{
string str = "This is a test string";
bw.Write(str);
}
}
Я получаю эти две шестнадцатеричные строки
vb6 - 15 00 54 68 69 73 20 69 73 20 61 20 74 65 73 74 20 73 74 72 69 6E 67
c# - 15 54 68 69 73 20 69 73 20 61 20 74 65 73 74 20 73 74 72 69 6E 67
Кажется, что BinaryWriter не совпадает между двумя при записиstrings, vb6 использует двухбайтовую строку, а C # использует unsigned int в кодировке UTF-7.Также я не могу найти какой-либо ресурс, который использует кодировку VB, когда он записывает файл таким образом.
Существуют ли какие-либо встроенные инструменты для записи так же, как это делает vb6, и если нет, то кроме поворота длины вa uint16, есть ли другие ошибки, о которых мне нужно знать?