十进制转十六进制:程序员真正在用的那种简写
这个换算在做什么
它把一个 10 进制数写成 16 进制,用 0 到 9 再加上 A 到 F 这十六个数字。十六进制不是另一种数,只是同一串二进制位的更短写法:一位十六进制恰好覆盖四位二进制,所以 32 位的值只占八个字符而不是三十二个。这种压缩正是它活到今天的原因。
A 到 F 这几个字母是怎么来的
16 进制需要十六个不同的数字符号,而常用的只有十个,于是字母表的前六个补上了空缺:A 是 10,B 是 11,一路到 F 是 15。它们是数字而不是缩写,所以 FF 的意思是十五个 16 再加上十五,也就是 255,和英文单词 fifteen 没有关系。
十进制转十六进制对照表
颜色、寻址和权限掩码中反复出现的十进制值及其十六进制写法。255 和 65535 这类数字标记着一个字节和两个字节字段的边界。
| 十进制 | 十六进制 |
|---|---|
| 0 | 0 |
| 1 | 1 |
| 7 | 7 |
| 8 | 8 |
| 10 | A |
| 15 | F |
| 16 | 10 |
| 31 | 1F |
| 64 | 40 |
| 100 | 64 |
| 127 | 7F |
| 200 | C8 |
| 255 | FF |
| 1000 | 3E8 |
颜色码与内存地址
网页颜色 #1E90FF 是三个字节——红、绿、蓝——写成六位十六进制,每一对就是一个 0 到 255 的通道。同样的写法也出现在内存地址里,0x7FFE 比它的十进制形式好比较得多。两者都赢在数字与字节边界对齐:两位数字,一个字节,永远如此。
大小写要统一
本转换器输出大写,与 C 语言清单、芯片手册和多数文档的惯例一致。小写同样合法,在网址和某些语言的字符字面量里很常见,输入框两种都收。同一个值里混用大小写虽然合法,但读起来别扭,挑一种就一直用下去。
常见问题
不用计算器怎么把十进制转成十六进制?
用 16 去除,把余数记成一位十六进制数字,再用商继续除,直到商为 0,最后把数字从后往前读。以 255 为例:255 ÷ 16 得 15 余 15,15 ÷ 16 得 0 余 15,答案是 FF。余数超过九就写成 A 到 F。
为什么用十六进制而不是二进制?
因为四位二进制正好对应一位十六进制,转换是直接替换,不需要任何算术。十六进制是同一串位的一种紧凑、可读的拼写方式,所以调试器、反汇编器和网络工具都选它。
0x 前缀是什么意思?
它是 C 和许多其他语言里的标记,表示后面这些数字是十六进制,所以 0x20 是三十二而不是二十。本转换器接受输入里的 0x 前缀,输出则不需要前缀,因为你所在的页面已经说明了进制。
64 位的值需要多少位十六进制?
十六位,而且本转换器能精确处理。64 位整数会超出浮点运算能精确表示的范围,用普通数字实现的工具面对 FFFFFFFFFFFFFFFF 会给出一个看着合理却是错误的答案;全程使用精确整数就完全避开了这个问题。
十六进制数字区分大小写吗?
不区分。FF 和 ff 是同一个值,输入框两者都接受。输出按惯例使用大写,与大多数源代码、文档和硬件手册的风格一致。