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

时间:2015-01-05 22:26:56

标签: c++ literals

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

例如在Hex中我可以定义一个这样的值:

BYTE data = 0XAB;

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

BYTE data = 0B10101011;

据我所知,C或C ++不支持 0B 。 我这样做的方式是我使用不同的位来表示不同的含义,如果在这里定义了值,那么我就更容易知道值意味着什么。

3 个答案:

答案 0 :(得分:3)

带有0b0B前缀的

C++14 allows binary literals

BYTE data = 0B10101011;

(参见" 2.14.2整数文字"在语言规范中)

答案 1 :(得分:2)

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

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

答案 2 :(得分:1)

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

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

bitset也提供了一些转换功能,因此这些功能可用于获取数字。