C++ 数据结构,可容纳 128 位数据
c++ data structure to hold 128 bits of data
我需要一个数据结构来保存大约120位的数据。
我有像 var = 0X01000000000000000000000000000000)>> 120 之类的位操作
保存如此冗长的数据的最佳数据结构是什么?
除非你指定你想用这些位做什么,否则std::bitset
可能是你最好的选择。
此外,gcc 和 clang 支持在某些目标上unsigned __int128
。虽然,这是非标准的。
您可以使用
std::bitset
.它有运算符operator<<
,operator>>
为它定义。
一个最小的例子:
#include <iostream>
#include <bitset>
int main()
{
std::bitset<120> b("01000000000000000000000000000000");
std::cout << "initial value: " << b << 'n';
b >>= 12;
std::cout << "final value: " << b << 'n';
}
您可以在此处查看演示。
保存如此冗长的数据的最佳数据结构是什么?
选项 1:
struct MyType { uint8_t data[16]; };
选项 2:
struct MyType { uint16_t data[8]; };
选项 3:
struct MyType { uint32_t data[4]; };
选项 4:
struct MyType { uint64_t data[2]; };
选项 5:
struct MyType { std::bitset<128> data; };
如果不了解它们,就很难说哪一个最能满足您的需求。
有什么理由避免std::bitset
吗?
#include <bitset>
...
std::bitset<128> bs;
bs[0] = 1; bs[127] = 1;
std::cout << bs.to_string() << std::endl;
// prints 128 digits with ones on both ends
相关文章:
- 当字段可以为null时,如何使用C++接口在Avro中写入数据
- 创建异构顶点数据数组的可移植方法
- 使来自线程的数据流对所有其他线程都可读
- pybind11:用可选数据表示并集
- 如何在ROS中使用PCL可视化动力学数据的表面法线
- 与shared_ptr相比,更小的运行时数据结构和更快的代码可实现独特的_ptr
- 无法在可视C++中检索资源文件数据
- 使用 CMake 在可执行文件中嵌入二进制数据
- Qt 在可预测的秒数后跳过 UDP 数据包
- PHP 中的实时仪表板,可从C++共享数据
- 固定大小的容器,其中元素被排序,并可以为C 中的数据提供原始指针
- 可容纳二维对象数组的变量
- 将骨旋转设置为在本地空间中的可容纳网眼
- 模板结构可容纳两种类型,但当时只有一种
- C++ 数据结构,可容纳 128 位数据
- EasyPNG替代/超级简单数据可视化库(C ++)
- 可视化C++数据结构,最好能容纳一个大的名称列表
- hiredis,如何检查是否有更多数据可供读取
- 从加速数据可视化运动/手势
- 如何使数据可用于类的所有对象