我是一个有用的助手,可以翻译文本。
我正在使用C#编写一个新程序,它需要读取和写入与vb6二进制格式兼容的二进制文件。我无法更改vb6程序,但我可以对我的程序进行更改。
除了字符串之外,我已经让一切都正常运行。
如果我在vb6中写入以下内容:
"我用C#写下了以下内容"
我得到了这两个十六进制字符串
在写入字符串时,BinaryWriter 在 VB6 和 C# 中似乎不相同。VB6 使用两个字节的字符串,而 C# 使用 UTF-7 编码的无符号整数。此外,我找不到任何资源来说明 VB 在这种方式下使用了哪种编码来写入文件。
是否有内置工具可以按照 VB6 的方式进行写入?如果没有,除了将长度转换为 uint16,还需要注意哪些问题?
我正在使用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 在 VB6 和 C# 中似乎不相同。VB6 使用两个字节的字符串,而 C# 使用 UTF-7 编码的无符号整数。此外,我找不到任何资源来说明 VB 在这种方式下使用了哪种编码来写入文件。
是否有内置工具可以按照 VB6 的方式进行写入?如果没有,除了将长度转换为 uint16,还需要注意哪些问题?