我有一個由Byte數組表示的Int32數組(每4個字節爲1個Int32),我想將它們轉換爲Int32數組(長度爲Byte。長度/ 4)。 我這裏是我想要的東西:如何將字節數組表示的Int32數組轉換爲Int32數組中的C#
//byte[] buffer;
for (int i=0; i<buffer.Length; i+=4)
{
Int32 temp0 = BitConverter.ToInt32(buffer, i);
temp0 += 10;
byte[] temp1 = BitConverter.GetBytes(temp0);
for (int j=0;j<4;j++)
{
buffer[i + j] = temp1[j];
}
}
但我不希望複製他們,我只是希望能夠告訴編譯器,它的Int32數組,而不是一個字節數組(以後來的操作)。
我看着這個How to Convert a byte array into an int array,但它將每個字節轉換爲Int32,並且我想將每個字節轉換爲Int32。 我也想這樣做,而不是將其複製到另一個陣列中以獲得性能。
(我們可以假設硬件是endianness本地,little endian表示小端系統)。
聽起來像是一個不安全的指針和指針 – pm100
[這裏](https://referencesource.microsoft.com/#mscorlib/system/bitconverter.cs,1618fc20415532f2)是['BitConverter.ToInt32(byte [ ],Int32)'](https://msdn.microsoft.com/en-us/library/system.bitconverter.toint32(v = vs.110).aspx);我*認爲*此代碼:'固定(字節* pbyte =&值[startIndex]){如果(startIndex%4 == 0){/ /數據對齊返回*((int *)pbyte); }'意味着它只是在對齊時將4個字節轉換爲int32,它不*轉換,因此應該是快速的。有人可以驗證嗎? – Quantic
@ pm100你能寫出不安全的代碼嗎?我嘗試過,但我得到了各種錯誤:( – pio