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 字节数组进行比较会说 minusOne 字节数组大于 plusOne (255 > 0)

有没有什么花哨的方法来移位、异或等,这样 Int.Min 会给出 0,0,0,0 而 int.Max 会给出 255,255,255,255 吗?

对困惑感到抱歉 :)

4

1 回答 1

2

只需添加int.MaxValue + 1到转换为 uint 的当前值即可保留范围,例如:

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