2015-01-05 1 views
1

Трудно описать мой вопрос. В основном, я просто хочу, чтобы определить значение в двоичном виде:Как определить значение в двоичном двоичном пути в C++?

Например, в Hex можно определить значение, как это:

BYTE data = 0XAB; 

, как я хочу, чтобы определить это так:

BYTE data = 0B10101011; 

Насколько я знаю, C или C++ не поддерживает 0B. То, как я это делаю, я использую разный бит для другого значения, если значение определено в этом, мне намного легче понять, что означает значение сразу.

ответ

3

C++14 allows binary literals с префиксом 0b или 0B:

BYTE data = 0B10101011; 

(см в разделе "2.14.2 Целые литералы" в спецификации языка)

+0

Они поддерживаются еще в звоном 2.9, GCC 4.9 и C++ компилятор V14 Intel. Visual Studio 2015 добавит поддержку бинарных литералов. Источники: [(1)] (http://www.italiancpp.org/wp-content/uploads/2014/03/CppISO-Feb2014-r1.pdf) [(2)] (http: //www.visualstudio. com/news/vs2015-preview-vs # C++) – bames53

1

Некоторые последние версии C/C++ поддерживают эту функцию. Вместо этого вы можете использовать битовый набор, если функция недоступна.

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

набор бит также предлагает некоторые функции преобразования, поэтому их можно использовать для получения номера.

+0

№ Нет версии C поддерживает это (даже не последнее C11) и только одну версию C++ (последний C++ 14) – MSalters

2

Если у вас нет поддержки C++ 14, вы можете сделать

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