【发布时间】:2021-03-04 13:47:30
【问题描述】:
我需要在这个分区中写一个 8 位数据包,其中包括 3 个整数:
int1 = 1 bit
int2 = 1 bit
int3 = 6 bit
我不知道该怎么做。我可以写一些 4 字节的数据包,使用这个对我们有用的函数:
buffer.AddRange(BitConverter.GetBytes(_value));
但我需要帮助来编写一个 8 位数据包,该数据包分为许多整数(或位元素)。我已经阅读过有关 BitArray 的信息,但我真的不知道如何使用它。我已经写了一些代码,但不知道它是否真的可以工作:
bool playback = false;
bool extExerciseNum = false;
BitArray byte4 = new BitArray(2);
byte4.Set(0, playback);
byte4.Set(1, extExerciseNum);
在这里,我假装使用前 2 个单独的整数创建一个 BitArray。
int exerciseNumber = 23;
BitArray b = new BitArray(new int[] { exerciseNumber });
int[] bits = b.Cast<bool>().Select(bit => bit ? 1 : 0).ToArray();
在这里,我假装写了一个 6 位长度的 BitArray(顺便说一下,我没有正确理解它)。
任何人都可以帮助我如何正确编写这个包?非常感谢!!
【问题讨论】:
-
只需将它们移入即可。它们需要按哪个顺序排列?
-
那个顺序:1位在前;然后再 1 位;最后,最后是 6 位 int。
-
在一个字节内,“第一”没有意义。 @TheGeneral 的问题是 int1 应该占据最高有效位 (MSB) 还是最低有效位 (LSB)
-
是的对不起,int1占用了MSB
标签: c# integer bit packet bitarray