16 進数値を含むバイト配列を持つアプリケーションを C# で作成しています。
データはビッグ エンディアンとして取得していますが、リトルエンディアンとして取得したいので、Bitconverter.toInt32
その値を整数に変換する方法を使用しています。
問題は、値を変換する前に、その 4 バイト データをソース バイト配列から一時配列にコピーし、その一時バイト配列を逆にする必要があることです。
ソース配列には他のデータも含まれているため、それを反転することはできません。
そのため、アプリケーションの動作が遅くなります。
コードには、waveData[]
大量のデータを含むバイトのソース配列が 1 つあります。
byte[] tempForTimestamp=new byte[4];
tempForTimestamp[0] = waveData[290];
tempForTimestamp[1] = waveData[289];
tempForTimestamp[2] = waveData[288];
tempForTimestamp[3] = waveData[287];
int number = BitConverter.ToInt32(tempForTimestamp, 0);
その変換には他の方法がありますか?
ベストアンサー1
System.Memory nuget への参照を追加し、BinaryPrimitives.ReverseEndianness() を使用します。
using System.Buffers.Binary;
number = BinaryPrimitives.ReverseEndianness(number);
符号付き整数と符号なし整数 (byte/short/int/long) の両方をサポートします。