我正在使用嵌入式平台(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。