【发布时间】:2020-01-02 03:06:43
【问题描述】:
所以我正在处理一个以数组形式出现的数据集。例如:
{0x00, 0x00, 0xFF, 0xF1, 0x6D, 0xA2, 0x00 0x00}
{0b00000000, 0b00000000, 0b11111111, 0b11110001, 0b01101101, 0b10100010, 0b00000000, 0b00000000}
我需要能够根据两个值从这个数组中提取信息:
- 起始位。
- 位数。
例如,如果起始位是 17,位长是 13,(假设第一位是索引 0),我的数据将是:
0b1111111111100
十进制:8188
然后,这个十进制值(或 uint32_t 或 w/e)将存储在一个变量中并输出。我可以针对单个案例执行此操作,但是很难将起始位和位数作为函数或代码块的变量的代码编写...
我尝试过使用 memcpy,但这只是字节可寻址的。
如有任何反馈,我将不胜感激!
【问题讨论】:
-
可能是基于
std::bitset的东西?boost::dynamic_bitset也可能是可行的。 -
首先创建一个返回单个位的函数。然后在循环中调用它并逐个获取所需的位。一旦成功,如果您需要更高的性能,您应该更好地了解如何以更大的块而不是一个接一个地获取位。
-
&用于按位与,<<用于for循环内的位移?我想我古老的旧 C 正在展示而不是花哨的新 C++... -
我不明白“如果起始位是 17”。请显示您提到的单个案例的代码。