【发布时间】:2019-12-13 20:23:40
【问题描述】:
我想要一个函数来帮助我从字节数组的起始位位置提取几个位或字节。字节数组的顺序为LSB。代码骨架如下:
typedef unsigned char uint8;
typedef unsigned short uint16;
uint16 ExtractBitsOrBytes(uint16 StartBit, uint8 *ByteArray, uint16 BitsWanted)
{
uint16 Result;
...
}
如何在C 中实现这个逻辑?非常感谢任何示例或起点。
【问题讨论】:
-
将
StartBit除以8来计算数组中的起始索引。然后计算要移动的位数和AND掩码以仅获取必要的位。 -
C 在
<stdint.h>中定义了uint16_t和uint8_t类型——也许你应该改用它们。 -
@AnttiHaapala 是的,你是对的,但这些是项目细节。
-
这是起点:stackoverflow.com/questions/15255692/…;可能是
>> 3或/ 8;和& 7或`% 8`。 -
是的...您的输出可能跨越几个字节,因此您通常必须获取低字节,然后向下移动,获取高字节,然后向上移动或进入结果。
标签: c arrays bit-manipulation bit endianness