我需要将转换int为使用的byte[]一种方法BitConverter.GetBytes()。但不确定是否符合以下规范:
int
byte[]
BitConverter.GetBytes()
XDR有符号整数是32位数据,它对[-2147483648,2147483647]范围内的整数进行编码。整数用二进制补码表示。最高和最低有效字节分别为0和3。整数声明如下:
资源: RFC1014 3.2
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;