按位右移>>在Objective-C中

时间:2013-11-05 16:57:55

标签: ios objective-c c bit-manipulation shift

我有一个变量(unsigned int)part_1

如果我这样做: 输出NSLog(@"%u %08x", part_1, part_1);(打印无符号值和十六进制值):

2063597568 7b000000

(只有前两个会有值)。

我想将其转换为

0000007b

所以我试过了 unsigned int part_1b = part_1 >> 6(以及许多变体)

但是这会输出:

32243712 01ec0000

我哪里错了?

1 个答案:

答案 0 :(得分:11)

您想要移位6 * 4 = 24位,而不仅仅是6位。十六进制printf中的每个'0'代表4位。

unsigned int part_1b = part_1 >> 24;
                                 ^^