我有一个 char 指针,它指向数组的 16 个字节(因此是 128 位)。 这些位包含一些对我的任务有值(value)的信息,我需要从它们的固定位置解析这些值。例如,第23位和第12位之间有时间信息。我知道我需要位掩码来检索此类数据,但我无法管理它。
谁能告诉我如何获取这些信息?
最后,我需要将这些检索到的位转换为整数,但这已经是任务的简单部分。
最佳答案
一般方法是选择方括号内的字节,然后使用单个 & 屏蔽掉您关心的位,然后将字节右移来自 lsb 的位数,然后您就得到了整数值。
例如
int i = (int)((a[1] & 0x6) >> 1);
这将获取第二个字的第二个和第三个最低有效位的值,并将该值放入一个整数中。
更具体地针对您的问题: 第23位和第12位
int i = (int)((a[1] & 0xF0) >> 4) || (((int)(a[2])) << 8);
C/C++ 中的另一种方法是定义带有位域的打包结构。
关于c - 用于获取 X 和 Y 位之间的值的位掩码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30026337/