我发现了一个名为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怎么办?还有其他方法我只能用一些有用的方式返回那些位吗?
我正在考虑一些常见情况,例如:
我的问题是:我应该返回/公开什么类型的数据/结构/方法,以便更容易使用位(或者至少更容易用于前面描述的情况)。