十进制与十六进制转换(含小数)

发布于:2021-07-06


十进制整数转十六进制

用十进制数除以 16 取余数,再用商除以 16 取余数,直到商为 0 或恰好整除。所得余数从后往前对应十六进制数高位至低位。

举例:

13566 转十六进制

1. 13566 / 16 = 847 余 14 (0xE)
2. 846   / 16 = 52  余 15 (0xF)
3. 52    / 16 = 3   余 4  (0x4)
4. 3     / 16 = 0   余 3  (0x3)

Result = 0x34FE

十进制小数转十六进制

将小数部分乘以 16,将得到的整数部分作为十六进制小数的第一位,然后再取之前结果的小数部分重复上一步骤,直到结果没有小数部分。

实际操作中,十进制小数转十六进制很容易出现无限循环小数。

举例:

0.1875 转十六进制

0.1875 * 16 = 3 (0x3)

Result = 0x0.3

十六进制转十进制(含小数)

从低位到高位分别用数位乘以 16 的 n 次方(整数位 n 从 0 开始,小数位 n 从 -1 开始),最后相加得出对应十进制数。

举例:

0xC.3 转十进制

1. C  * 16e0   = 12
2. 3  * 16e-1  = 0.1875
3. 12 + 0.1875 = 12.1875

Result = 12.1875