小编典典

C# int 到字节[]

all

我需要将其转换intbyte[]一种方法是使用BitConverter.GetBytes(). 但我不确定这是否符合以下规范:

XDR 有符号整数是一个 32 位数据,它对 [-2147483648,2147483647]
范围内的整数进行编码。整数以二进制补码表示。最高和最低有效字节分别是 0 和 3。整数声明如下:

资源:RFC1014 3.2

我怎样才能进行满足上述规范的 int 到 byte 转换?


阅读 109

收藏
2022-07-09

共1个答案

小编典典

RFC 只是想说一个有符号整数是一个普通的 4 字节整数,字节以大端方式排序。

现在,您很可能正在使用 little-endian
机器,并且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;
2022-07-09