バイト配列(4バイトごとに1つのInt32)で表されるInt32の配列があり、Int32配列(Byteの長さ)に変換したい。長さ/ 4)。ここ は私が何をしたいの例です:バイト配列で表されるInt32配列をC言語でInt32配列に変換する方法
//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に変換します。 私はこれを他の配列にコピーしてパフォーマンスを向上させないといけません。
(ハードウェアはエンディアンネイティブで、リトルエンディアンのリトルエンディアンシステムと見なすことができます)。
は安全でないものとポインタの仕事のように聞こえます – pm100
[Here](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)。このコードは 'fixed(byte * pbyte =&value [startIndex]){if(startIndex%4 == 0){//データがアライメントされて返されます*((int *)pbyte); } 'は、整列されたときにint32に4バイトを単純にキャストすることを意味します。変換しないため、高速である必要があります。誰かが確認できますか? – Quantic
@ pm100あなたは安全でないコードを書いてください。私は試してみましたが、私はすべての種類のエラーがあります:( – pio