getHexDigit - 从单词x
中提取十六进制数字n我很困惑,因为我不明白如何使用这些操作提取和写入。请帮忙!!
int getHexDigit(int x, int n) {
return (x >> (n >> 4)) & 0xff; // How do I fix this
}
答案 0 :(得分:1)
这应该这样做:
int getHexDigit(int x, int n) {
return (x >> (n << 2)) & 0xf;
}
首先,将n
乘以4
(向左移2位),因为每个十六进制数字是4位,然后通过右移和屏蔽{{1 }}
例如,了解它如何适用于0x0f
:
getHexDigit(0x1234, 2)
答案 1 :(得分:1)
单个数字对应4位,因此您必须将WHERE
位向右移位;因此,您必须将n*4
乘以n
,因为您不能使用4
,所以您只需编写n * 4
;向左移位两位意味着n << 2
:
2*2
然后你必须&#34;揭开&#34;除了你想要的数字之外的所有数字;因此return (x >> (n << 2)) & 0x0F;
。