我处理一些数据,它表示为一个位序列,
number(378) 其中不能被 8 整除。
有哪些可能的方法来处理这样的序列?
我需要存储它、处理它、将一个序列附加到另一个序列。
我考虑过的选项:
- 四舍五入到最接近的数字 % 8 == 0,并使用该大小的字符数组。
- 使用
bitfield
,据我所知,bitfield
的内存对齐是实现定义的。
更新:
我正在使用的位序列的属性:
它是使用 Reed-Solomon 编码算法从给定单词生成的代码字。
因此,将位作为独立值使用对我来说没有实际用处,我主要关心的是如何存储代码字并将新代码字附加到现有代码字上,因为为了减少突发错误的影响,我创建了交错矩阵
最佳答案
另一种选择是使用 std::vector。 bool 类型的 std::vector 专用于 bool 以仅使用 ⌈v.size()/8⌉
字节。但我并不是说你应该使用它。这种特化是原因v.begin()
不仅仅是一个原始指针,而是一些依赖于类型的迭代器。在所有其他情况下 v.begin()
vector 的指针始终是指向元素的指针。
如果位数组的长度很长,但您希望只设置很少的位,您还应该考虑使用 std::set<int>
相反,它存储了应该为真的位的索引。
关于c++ - 如何存储大小位数组,例如大小 % 8 != 0?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37296741/