我想在C中获得uint16_t的最低字节。
例:
20544 = 0x50400x40 = 64我试过,(X&((1<< 2)-1))。这对我不起作用。
你使用字节(复数),但a uint16_t 由两个字节组成,所以我假设你的意思是最低有效字节(单数)。如果是这样,这是获得它的一种方法:
uint16_t
uint8_t lsb = ((uint8_t)(((uint32_t)(val)) & 0xFF))
保留两个最不重要的字节:
X & 0xffff
或以你的方式
(x & (1 << 16) - 1)
正如评论中所述,这可能是某些情况下的问题 int 有16位,所以我更喜欢 x & 0xffff 。还有另一种“聪明”的做法:
int
x & 0xffff
(X & ((unsinged char) ~0)
要么
(X & ((uint8_t) ~0)
这很难跟上编辑和不明确的问题。