bitConverter.ToInt32 メソッドを使用して C# でビッグ エンディアンからリトルエンディアン データを取得する方法は? 質問する

bitConverter.ToInt32 メソッドを使用して C# でビッグ エンディアンからリトルエンディアン データを取得する方法は? 質問する

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) の両方をサポートします。

おすすめ記事