2011-03-21 40 views
1

是否可以將從舊C++應用程序傳遞給C#的字節數組轉換爲C#而不知道結構是什麼?盲目地將一個bytearray轉換爲一個結構?

我正在嘗試重新制作我們公司使用的舊應用程序,但源代碼不再可用。任何幫助將不勝感激。謝謝!

+1

你好, 結構翻譯中被稱爲編組.... 您可以使用Marshal.PtrToStructure功能來做到這一點。但我認爲你必須知道結構是如何定義的。無論如何,你必須在列表中知道結構佈局。你可以在這裏找到文檔:http://msdn.microsoft.com/en-us/library/4ca6d5z7.aspx – Kevin 2011-03-21 16:10:17

+0

謝謝!現在就是它所謂的。雖然,我發現發送的字節數組並不像我預期的那樣複雜。 – arvil 2011-03-22 15:49:38

回答

4

如果你想實際使用嵌入在數組中的數據,你需要知道一些關於字節數組的結構。如果沒有這些信息,數組只是字節 - 你可以很容易地將它作爲字節來引入,但這樣做沒什麼用處。

如果此信息不可用,您可以使用hex editor來嘗試反向設計字節數據。

+0

我已經將字節數組轉換爲十六進制,然後轉換爲字符串。顯然,我給自己一個劃定的字符串。非常感謝十六進制編輯器提示! – arvil 2011-03-22 15:47:41

1

您總是可以將第一個字節的地址作爲類型*並希望它能夠正常工作。 32位和64位操作系統可能會有一些大小問題,儘管這取決於C++代碼是如何編譯的。事情是你必須知道你想投的類型。您可以使用字節數組的大小作爲指標,或者使用指針算術來讀取字段。在這種情況下,如果不是全部看起來像字節,則必須知道關於結構的信息。

相關問題