我发现了一个问题。我必须使用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);
}
答案 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写的数据的确切格式(而且我懒得测试),但你可能需要单独写出字符串长度和字符串本身。 您应该能够使用十六进制编辑器查看确切的格式以查看文件。