字节数组初始化语法-指定前20位,并用0填充其余部分
本文关键字:并用 填充 余部 20位 数组 字节数 初始化 语法 -指 字节 | 更新日期: 2023-09-27 17:59:03
我的目标是得到一个64位的值,因此得到一个大小为8的字节数组。然而,我的问题是,我想自己设置前20位,然后将其余的设置为0。这可以通过缩写字节数组初始化来完成吗?
例如,如果我想要所有的0,我会说:
byte[] test = new byte[] {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
我的想法/尝试:
所以每个十六进制数字对应4个二进制数字。因此,如果我想指定前20位,那么我指定前5个十六进制数字?但我不确定如何做到这一点:
byte[] test = new byte[] {0xAF, 0x17, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00};
这意味着我已经指定了前24位,对吗?而不是20。
我可以使用BitArray
并以这种方式进行,但我只是想知道是否可以以上述方式进行。
怎么样:
byte byte1 = 0xFF;
byte byte2 = 0xFF;
byte byte3 = 0xFF;
// 8bits 8bits 4bits : total = 20 bits
// 11111111 11111111 11110000
byte[] test = new byte[] { byte1, byte2, (byte)(byte3 & 0xF0), 0x00, 0x00, 0x00, 0x00, 0x00 };
您可以向后写入字节,并使用BitConverter.GetBytes(long)
:
var bytes = BitConverter.GetBytes(0x117AF);
演示。
由于每个十六进制数字对应一个四位半字节,因此可以以四位的"增量"初始化数据。然而,反向编写的数据对于代码的人类读者来说几乎肯定是不太清楚的。