Я работаю над встроенной платформой (ARM) и должен быть осторожен при работе с битовыми шаблонами. Давайте представим, что эта строка находится вне моего влияния:
uint8_t foo = 0xCE; // 0b11001110
Интерпретируется как беззнаковое, это будет 206. Но на самом деле оно подписано, поэтому похоже на -50. Как я могу продолжать использовать это значение как подписанное?
int8_t bar = foo; // doesn't work
ни то, ни другое (в результате 0x10 или 0x00 для всех входных значений)
int8_t bar = static_cast<int8_t>(foo);
int8_t bar = reinterpret_cast<int8_t&>(foo);
Я просто хочу, чтобы биты оставались нетронутыми, т.е. (bar == 0xCE)
Наоборот, мне было бы интересно, как получить битовые шаблоны, представляющие отрицательные числа, в переменные без знака, не испортив битовый шаблон. Я использую GCC.