我目前正在处理的数据单元(网络数据包 header )在其定义中有 2 个标志,存储在字节字段中并通过按位运算符访问。不幸的是,我只需要 2 位,我在想我能用其他 6 位做什么?我可以用它们来存储号码吗?
我可以使用它们来存储一些内部状态代码(值范围小于char
吗?)并且不要浪费它们。
是否有任何小于字节的数据类型,我如何在 C++ 中使用它们?如果不是,我是否应该浪费这些位并让它们毫无意义?
最佳答案
您可以使用一个位字段,如所述here .
改编自该页面:
#include <iostream>
struct S {
// 6-bit unsigned field,
// allowed values are 0...63
unsigned int b : 6;
};
int main()
{
S s = {7};
++s.b;
std::cout << s.b << '\n'; // output: 8
}
关于c++ - 我如何使用 6 位来存储值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31418994/