1

bitconverter.GetBytes を使用して整数からバイトを取得できることはわかっています。ただし、内容を並べ替え順序で比較できる配列が必要です。

例えば

var plusOne = BitConverter.GetBytes(1);
yields bytes: 0,0,0,1

var plusOne = BitConverter.GetBytes(2);
yields bytes: 0,0,0,2

ここまでは順調ですね:

しかし:

var minusOne = BitConverter.GetBytes(-1);
yields bytes: 255,255,255,255

ここで奇妙なことは何もありません。しかし、minusOne バイト配列を plusOne bytearray と比較すると、minusOne バイト配列が plusOne よりも大きい (255 > 0) ことがわかります。

Int.Min が 0,0,0,0 を与え、int.Max が 255,255,255,255 を与えるように、シフト、xor などの派手な方法はありますか??

混乱させて申し訳ありません :)

4

1 に答える 1

2

int.MaxValue + 1次のように範囲を維持するには、uint にキャストされた現在の値に追加するだけです。

var result = BitConverter.GetBytes((uint)((long)input - int.MinValue));
于 2011-10-28T07:43:26.923 に答える