二进制文件在VB6和C#中写入相同的数据格式

时间:2013-05-23 04:42:58

标签: c# file-io vb6 binary

我发现了一个问题。我必须使用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);
    }

2 个答案:

答案 0 :(得分:2)

这几乎不是同一个代码。您不应该再使用VB.Net中旧的基于文件号的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

答案 1 :(得分:1)

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