【发布时间】:2019-02-25 12:41:34
【问题描述】:
我有一个 16 位无符号变量。我需要将它分成 8 位块。
以下做得够了吗:
chunk_lsb = (uint8)variable;
chunk_msb = (uint8)(variable >> 8);
或者我应该使用面具:
chunk_lsb = (uint8)(variable & 0xFFu);
chunk_msb = (uint8)((variable >> 8) & 0xFFu);
我知道这两种方法都有效,我只是在寻找最好的方法,如果有的话。也许没有,只是使用演员表来减少计算是最好的方法?大家觉得呢?
【问题讨论】:
-
我认为两者都会生成相同的二进制代码。由于第一个解决方案更具可读性,我会使用这个。您只需要确保 uint8 是 8,但在所有平台上(我猜是)
-
谢谢@jaudo,这也是我的方向。
-
旁注:应该首选标准
stdint.h类型,例如uint8_t,而不是自己创建。