一尘不染

C#int转换为byte []

c#

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

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

资源: RFC1014 3.2

我如何做一个可以满足上述规范的从整数到字节的转换?


阅读 274

收藏
2020-05-19

共1个答案

一尘不染

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;
2020-05-19