Question
ある整数型をリトルエンディアン(あるいはビッグエンディアン)でbyte
配列に書き込みたい。
または、byte
配列に書き込まれているリトルエンディアン(あるいはビッグエンディアン)の整数型を復元したい。
どうすればいいか。BitConverter
クラスのGetBytes
やToInt32
にはバイトオーダーを指定する方法はない。
Answer
BinaryPrimitives
クラスを使用する。
ReadOnlySpan<byte>
から整数型(int
)を復元するにはReadInt32BigEndian
/ReadInt32LittleEndian
- 整数型(
int
)の内容をSpan<byte>
に書き出すにはWriteInt32BigEndian
/WriteInt32LittleEndian
メソッドを使用する。
inti1=12345678;varbuffer=newbyte[255];BinaryPrimitives.WriteInt32LittleEndian(buffer.AsSpan(0,4),i1);inti2=BinaryPrimitives.ReadInt32LittleEndian(buffer.AsSpan(0,4));
int
型だけでなく、short
, ushort
からlong
, ulong
型までサポートされている。
このクラスはSystem.Buffers.Binary
名前空間にあり、.NET Core 2.1から使用できる。
.NET Frameworkを利用している場合、System.Memory
をNuGetで入手すれば使用できるようだ。
(System.Buffers
ではない。)