У меня есть unsigned int и шестнадцатеричное значение. Я хочу, чтобы проверить, не содержит ли unsigned int шестнадцатеричное значение; например:Бит-манипуляция Hexadecimal C++
unsigned int reason = 0x80020002
#define MAJOR_ERROR_CODE 0x00020000
#define MINOR_ERROR_CODE 0x00000002
#define OPTIONAL_ERROR_CODE 0x80000000
Теперь, как мы видим, переменная имеет все три кода ошибки #define. Мне нужно определить наличие/отсутствие шестнадцатеричных кодов ошибок в переменной. Как мне это сделать?
Редактировать 1: Извините, все, наверное, я задал несколько другой вопрос, когда я попытался упростить его и опубликовать. То, что у меня есть пара крупных, малых и факультативных кодов ошибок - например, для
#define MAJOR_ERROR_CODE_1 0x00020000
#define MAJOR_ERROR_CODE_2 0x00010000
#define MAJOR_ERROR_CODE_3 0x00070000
#define MINOR_ERROR_CODE_1 0x00000002
#define MINOR_ERROR_CODE_2 0x00000004
#define MINOR_ERROR_CODE_3 0x00000006
#define OPTIONAL_ERROR_CODE_1 0x80000000
#define OPTIONAL_ERROR_CODE_2 0x50000000
#define OPTIONAL_ERROR_CODE_3 0x30000000
Теперь моя беззнаковое целочисленное значение представляет собой сочетание этих трех кодов ошибок. Каждый из этих кодов ошибок имеет уникальную строку и в зависимости от того, какая из них присутствует в моей переменной, мне нужно создать строку.
У вас есть 3 ошибки (мажор, минор, опционально) зачем вам весь Int (предполагая, что 32 бита) для хранения этих троих? Почему бы просто не использовать uint8_t и выбрать три бита, и если они установлены, у вас есть ошибки, если они нет, у вас нет ошибок? Вы можете проверить отдельные ошибки или комбинацию всех или всех трех. –