用于读取位

时间:2015-09-04 16:35:32

标签: c++ bitstring

我发现了一个名为python-bitstring的精彩项目,我相信C ++端口在某些情况下非常有用(当然在我的一些项目中)。

在移植读/写/补丁字节方法时,我根本没有遇到任何问题;它就像将Python翻译成C ++一样简单。

无论如何,现在我正在使用位方法,我不确定如何表达该功能。

例如,假设我想创建一个类似的方法:

readBits(uint64_t n_bits_to_read, uint64_t n_bits_to_skip = 0) {...}

我们假设,为了这个例子,this->data是一块内存(void *),包含我正在阅读的整个数据。

因此,该方法将接收要读取的位数和可跳过的可选位数。

this->readBits(5, 2);

这样我就会从第2位到第6位读取位(为了这个例子,忘记小/大端)。

0 1 1 0 1 0 1 1
    ‾ ‾ ‾ ‾ ‾

我不能返回小于一个字节的任何东西(或者我可以?),所以即使我实际读取5位,我仍然会返回8.但是如果我读取14位并跳过1怎么办?还有其他方法我只能用一些有用的方式返回那些位吗?

我正在考虑一些常见情况,例如:

  • 前14位是否匹配“010101 .....”
  • 跳过2匹配后,接下来的13位匹配“00011010 .....”
  • 读取前5位并将它们转换为int / float
  • 跳过5后读取7位并将其转换为int / float

我的问题是:我应该返回/公开什么类型的数据/结构/方法,以便更容易使用位(或者至少更容易用于前面描述的情况)。

0 个答案:

没有答案