我使用尽可能少的字节数以字节等效格式存储数字。在 65535 到 16777215 的范围内,BitConverter 给了我一个 4 字节的数组,但我只想存储 3 个字节。
对于下面的代码,我的数组是[0]254、[1]255、[2]255、[3]0,所以我可以去掉字节[3]。这是在Core i7 proc上。在我的生产代码中,在数组复制之前,我正在检查 BitConverter.IsLittleEndian 以确定我可以截断最后一个字节。
int i = 16777214;
byte[] bytesTemp = BitConverter.GetBytes(i);
byte[] value = null;
if (BitConverter.IsLittleEndian)
Array.Copy(bytesTemp, 0, value, 0, 3);
我的问题是 - 我是否需要关注系统的字节序,或者 CLR 是否只使用这种 LittleEndian 格式?我没有 BigEndian 系统(甚至不知道如何获得)来测试我的字节数组是否以相反的顺序出现。