我正在将旧的 Visual BASIC 程序转换为 C#。该程序通过串行或以太网线路向某些工业机械发送消息。为此,它创建消息的字节数组。
问题是有MANY(~50) 种不同的消息格式,每种格式在 VB6 中定义为用户定义类型。例如。
Public Type K_QCHECK
Header As K_HEADER3
Count As LNG4
crc As INT2
End Type
(LNG4 和 INT2 是自定义类型)通过自动翻译工具运行 VB6 代码,我得到一个 C# 结构:
public struct K_QCHECK
{
public K_HEADER3 Header;
public LNG4 Count;
public INT2 crc;
}
但旧的 VB6 代码使用 LSet 将这些复制到字节数组中。这取决于类型代表连续的内存块的假设。但在 C# 中,编译器在内存中布置内容的方式应该是程序员无法访问的实现细节。
那么将这些不同结构的内容放入字节数组的最佳方法是什么?我可以将每个类都创建为一个类,并为其提供一个 CopyToByteArray 方法或运算符,但其中有 50 个,因此看起来工作量很大。在此先感谢您的任何建议!
这可能不是正确的解决方案,但是有一个 StructLayoutAttribute 可以让您显式定义结构在内存中的布局方式。
http://msdn.microsoft.com/en-us/library/system.runtime.interopservices.structlayoutattribute%28v=vs.110%29.aspx http://msdn.microsoft.com/en-us/library/system.runtime.interopservices.structlayoutattribute%28v=vs.110%29.aspx
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)