2

我发现了一个问题。我必须使用 VB6 和 C# 编写二进制文件。当我编写如下所述的相同变量集时,两个输出都不同。我可以猜到,它们表示字符串的方式在 C# 和 VB6 中是不同的。我只是想知道有什么方法可以使两者的写作相似。因为有时我可能需要用 C# 和 VB 编写相同的内容

VB6

nFileNum = FreeFile
stringVal = ""
stringVal2 = "Hello"
i = 25
sFilename = "C:\Temp\fromVB.bin"
Open sFilename For Binary As #nFileNum
    Put #nFileNum, , stringVal
    Put #nFileNum, , stringVal2
    Put #nFileNum, , i
Close #nFileNum

C#

    const string fileName = @"C:\Temp\fromC#.bin";
    string stringVal = "";
    string stringVal2 = "Hello";
    int i = 25;

    using (BinaryWriter writer = new BinaryWriter(File.Open(fileName, FileMode.Create)))
    {
        writer.Write(stringVal);
        writer.Write(stringVal2);
        writer.Write(i);
    }
4

2 回答 2

2

这几乎不是相同的代码。您不应再在 VB.Net 中使用旧的基于 File Number 的 IO。该 API 仍然存在的唯一目的是使将代码从 VB6 移植到 .Net 变得更容易。VB.Net 应该使用与 C# 代码相同的 API。如果您想要匹配的结果,那就更是如此:

Const fileName As String = "C:\Temp\fromVB.bin"
Dim stringVal As String = ""
Dim stringVal2 As String = "Hello"
Dim i As Integer = 25

Using writer As New BinaryWriter(File.Open(fileName, FileMode.Create))
    writer.Write(stringVal)
    writer.Write(stringVal2)
    writer.Write(i)
End Using
于 2013-05-23T04:51:00.860 回答
1

我不记得 VB6 写入的数据的确切格式(我懒得测试),但您可能需要分别写出字符串长度和字符串本身。您应该能够使用十六进制编辑器查看文件的确切格式。

于 2013-05-24T09:41:52.260 回答