假设你有一个整数并且想将其转换为字节数组。在搜索了各种资料后,我发现有两种方法可以实现,一种是仅使用移位,另一种是先移位再进行掩码处理。我理解移位部分,但是为什么需要进行掩码处理呢?
例如,情景1:
uint8 someByteArray[4];
uint32 someInt;
someByteArray[0] = someInt >> 24;
someByteArray[1] = someInt >> 16;
someByteArray[2] = someInt >> 8;
someByteArray[3] = someInt;
场景2:
uint8 someByteArray[4];
uint32 someInt;
someByteArray[0] = (someInt >> 24) & 0xFF;
someByteArray[1] = (someInt >> 16) & 0xFF;
someByteArray[2] = (someInt >> 8) & 0xFF;
someByteArray[3] = someInt & 0xFF;
有选择一个而不是另一个的原因吗?
CHAR_BIT == 9
,这在理论上是可能的,并且在历史上确实发生过,那么掩码确保事情正常运行。一些DSP芯片的CHAR_BIT == 16
。对于CHAR_BIT == 8
的系统(大多数当前系统),这是不必要的。 - undefined