如果我有一些数组元素,我如何从数组元素buffer[0]
中获取单个数字?
例如,假设我有buffer[0]=0x0605040302
,我想先提取2,然后是0,然后是6,等等。
答案 0 :(得分:4)
数组元素内容为一个数字。您正在尝试从中提取A DIGIT。寻找掩盖和转移 - &和>>运算符。
修改强>
掩码是一个“0”和“1”的字符串,可以让您从一个数字中隔离出感兴趣的位。包含十六进制数字0xF的掩码用于隔离数字中的各个十六进制数字。例如:
num = 0x4321 (= 0100_0011_0010_0001)
mask = 0x00f0 (= 0000_0000_1111_0000)
num & mask = 0x0020 (= 0000_0000_0010_0000)
有效地移动数字会将所需位移到数字中的所需位置。因此,将数字向右移动n个位置会使#n位置为#0。
num = 0x4321 (= 0100_0101_0010_0001)
num >> 8 = 0x0043 (= 0000_0000_0100_0011)
结合这两项操作,你就得到了提取的数字!