2017-01-23 38 views
0

我有一個包含UInt8值的一維C++數組 - 我想轉換這些值並將它們放入一個2D C#byte數組。目前,我的代碼給了我不正確的值。這是我的代碼:將UInt8 C++值轉換爲C#字節數組

IntPtr ptr = GetDataFromCPPSide();  

byte[,] data = new byte[dimension1, dimension2]; 
for(int i = 0; i < dimension1; i ++) 
{ 
    for(int j = 0; j < dimension2; j++) 
    { 
     data[i, j] = Marshal.ReadByte((IntPtr)(ptr.ToInt64() + j + i * dimension2) * 1)); 
    } 
} 

現在,這隻能正確地轉換一些值。我確信它與轉換for循環中的值的方式有關。我已經在C++端進行了檢查,並且值正在被正確地返回。有任何想法嗎?

+0

當你正在處理字節的東西或反過來轉換*總是*考慮編碼。沒有它是一面大紅旗。 – Tigran

+0

@Tigran你能否詳細說明一下? – Roka545

+0

從一個字節流轉換爲數據類型時,必須使用編碼。它是Unicode嗎? UTF-8?還有別的嗎?沒有必要*表示*是你的問題,但無論如何都要考慮。這就是這是一個評論,而不是一個答案。 – Tigran

回答

0

使用:

pingdata[i, j] = (byte)Marshal.ReadByte((IntPtr)(ptr.ToInt64() + (i * d2 + j))); 

固定的問題。

相關問題