这个技能对于查看 x86 那堆控制寄存器的各个位的开关状态、分解 CR3 寄存器的值之类的操作非常有用。
比如有这么一个数:
0x9abc121
16 进制的一位对应 2 进制的 4 位,把 16 进制的每一位分解成 8 + 4 + 2 + 1 的形式,自高到低排列,就是对应的二进制值了:
8 | 4 | 2 | 1 |
---|---|---|---|
0 | 0 | 0 | 0 |
如果分解完了,包含第一行的数,那么所对应的第二行的位是 1,反之是 0。
如:9 = 8 + 1
那么,0x9 = 0b1001
全部按照步骤转换,即为:
1001 1010 1011 1100 0001 0010 0001
2 进制转 16 进制,按照上文步骤反着来,即将二进制数 4 位一分,每 4 位从高到低分别代表 8421,重复相加并将得到的结果写成一个数就行。