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



资料来源:RFC1014 3.2
我如何做一个可以满足上述规范的从整数到字节的转换?

最佳答案

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;

09-27 22:28