字节数组初始化语法-指定前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并以这种方式进行,但我只是想知道是否可以以上述方式进行。

字节数组初始化语法-指定前20位,并用0填充其余部分

怎么样:

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);

演示。

由于每个十六进制数字对应一个四位半字节,因此可以以四位的"增量"初始化数据。然而,反向编写的数据对于代码的人类读者来说几乎肯定是不太清楚的。