c++ - 如何存储大小位数组,例如大小 % 8 != 0?

标签 c++ memory bit-manipulation

我处理一些数据,它表示为一个位序列,
number(378) 其中不能被 8 整除。

有哪些可能的方法来处理这样的序列?
我需要存储它、处理它、将一个序列附加到另一个序列。

我考虑过的选项:

  1. 四舍五入到最接近的数字 % 8 == 0,并使用该大小的字符数组。
  2. 使用 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/

相关文章:

python - 短标量中的 Numpy 溢出

python - 在 Python 中准确测量对象大小 - Sys.GetSizeOf 不起作用

networking - 从网络位计数转换为网络掩码的最佳方法是什么?

c++ - 从 gnuplot 获取变量到 c++

c++ - 修改,阻止 HTTP 连接

c++ - 帮助实现一个 "store buying"程序

c++ - 无符号整数的快速无分支最大值

c# - c++和c#应用程序通过网络进行通信

c++ - Win32 C++ 中的 DrawText 内存使用量增加

c - 什么是 12345 >> 2 真的在做算术?