如何在 C++ 中以二进制位方式定义一个值?

How to define a value in binary bit way in C++?

很难描述我的问题是什么。基本上我只想以二进制方式定义一个值:

例如在十六进制中我可以这样定义一个值:

BYTE data = 0XAB;

我想定义的方式是这样的:

BYTE data = 0B10101011;

据我所知,C 或 C++ 不支持 0B。 我这样做的方法是我使用不同的位来表示不同的含义,如果在此定义了值,那么我会更容易立即知道该值的含义。

C++14 allows binary literals 带有 0b0B 前缀:

BYTE data = 0B10101011;

(参见语言规范中的“2.14.2 整数文字”)

C/C++ 的某些最新版本支持此功能。如果该功能不可用,您可以使用位集。

bitset<8> b(string("01010101"));

bitset也提供了一些转换函数,所以可以用它们来得到一个数字。

如果您不支持 C++14,您可以

BYTE data = std::bitset<8>("10101011").to_ulong(); // casted back to BYTE