我需要将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;