1. ホーム
  2. c#

[解決済み] C# intからbyte[]への変換

2022-04-21 09:15:17

質問

を変換する必要があります。 intbyte[] という方法があります。 BitConverter.GetBytes() . しかし、それが以下の仕様に合致しているかは不明です。

XDR符号付き整数は、32ビットのデータで、以下の整数をエンコードします。 2147483648,2147483647]の範囲にあります。 整数は 2の補数表記である。 最上位バイトと最下位バイトは 0と3である。 整数は次のように宣言される。

出典 RFC1014 3.2

上記の仕様を満たすint-byte変換はどのようにすればよいのでしょうか?

どのように解決するのですか?

RFCは、符号付き整数が、バイトをビッグエンディアンで並べた通常の4バイト整数であることを言おうとしているだけです。

さて、あなたはおそらくリトルエンディアンのマシンで作業をしていて BitConverter.GetBytes() を指定すると byte[] を反転させます。だから、試してみてください。

int intValue;
byte[] intBytes = BitConverter.GetBytes(intValue);
Array.Reverse(intBytes);
byte[] result = intBytes;

しかし、最も移植性の高いコードにするためには、次のようにすればよい。

int intValue;
byte[] intBytes = BitConverter.GetBytes(intValue);
if (BitConverter.IsLittleEndian)
    Array.Reverse(intBytes);
byte[] result = intBytes;