我正在將舊的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