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