我正在将旧的Visual BASIC程序转换为C#。该程序通过串行或以太网线路将消息发送给某些工业机器。为此,它创建一个消息的字节数组。将不同的结构体复制到字节数组
问题是存在不同的消息格式,每个消息格式都在VB6中定义为用户定义的类型。例如。
Public Type K_QCHECK
Header As K_HEADER3
Count As LNG4
crc As INT2
End Type
(LNG4和INT2的是自定义的类型)通过自动翻译工具,我得到一个C#结构运行VB6代码:
public struct K_QCHECK
{
public K_HEADER3 Header;
public LNG4 Count;
public INT2 crc;
}
但复制这些字节数组与旧VB6代码LSET。这取决于这种假设,即类型代表了连续的记忆块。但是在C#中,编译器在内存中布置东西的方式应该是程序员无法访问的实现细节。
那么,将这些不同结构的内容转换为字节数组的最佳方式是什么?我可以让每个人都成为一个类,并给它一个CopyToByteArray方法或运算符,但其中有50个这样看起来像很多工作。在此先感谢您的任何建议!
序列化:) http://msdn.microsoft.com/en-us/library/vstudio/ms233843.aspx – gustavodidomenico
我认为序列化不会产生原始数据的字节对字节复制结构,因为它可能包含元数据。 – user316117