【发布时间】:2014-12-09 17:01:46
【问题描述】:
我有一个由 VB6 应用程序编写的二进制文件,现在想使用 C# 应用程序读取 VB6 导出的二进制文件。我已经在我的 C# 项目中使用了 Microsoft.VisualBasic.dll。
然而,C# 应用程序中存在一些数据不一致,但我已在 VB.net 中对其进行了检查,并且效果也很好。 (我从 VB6 转换为 VB.net,然后将 VB.net 转换为 C#)
屏幕截图表示使用 C# 和 VB.Net 应用程序读取二进制文件的结果。 VB.Net 是我的预期结果,现在我的 C# 应用程序显示不一致的结果
在 C# 和 VB.NET 中都是双精度值,根据我的观察,int、string 值看起来都不错。
在 C# 中,我使用如下所示的语句,BinaryDetails 是结构体,里面有几个双变量
ValueType DetailsValueType = (ValueType)BinaryDetails;
FileSystem.FileOpen(FileNumber, FileName, OpenMode.Binary, OpenAccess.Read);
FileSystem.FileGet(FileNumber, ref DetailsValueType);
我已将 C# 中的数据类型从 double 更改为 float,但仍不是我的预期结果:
【问题讨论】:
-
我迷路了 :( 恕我直言,这个问题需要更清楚。但甚至不确定要提出什么改进建议。对于初学者,这些屏幕截图要显示什么?
-
截图代表使用C#和VB.Net应用程序读取二进制文件的结果。 VB.Net 是我的预期结果,现在我的 C# 应用程序显示不一致的结果
-
你到底为什么要转换成 ValueType?
-
您是否可以从文件中向您的问题添加一条记录?
-
如果您可以发布您正在写入磁盘的结构的外观,那将非常有帮助。我想问题出在 VB 和 C# 编译相同的结构以具有不同的内存对齐方式。有关如何在 C# 中影响结构布局的更多信息,请参见:developerfusion.com/article/84519/mastering-structs-in-c