c无符号整数bitshift

时间:2014-04-04 20:49:32

标签: c bit-shift

我有这个代码将无符号的32位整数分割成一个char数组,数组的每个元素都与整数的8位相关:

unsigned char result[4];
result[0] = (value >> 24) & 0xFF;
result[1] = (value >> 16) & 0xFF;
result[2] = (value >> 8) & 0xFF;
result[3] = value & 0xFF;

我需要做出哪些更改才能将32位无符号整数分成3个值:第1个值与前8位相关,第2个值与第2个8位相关,第3个值与最后16位相关?

感谢

1 个答案:

答案 0 :(得分:3)

不要将它们称为第一位/最后一位。请参阅它们的重要性。

unsigned short result[3];
result[0] = (value >> 24) & 0xFF;
result[1] = (value >> 16) & 0xFF;
result[2] = value & 0xFFFF;