跳到主要内容
CalcMax

十六进制转十进制换算器

结果

10,815

十进制

各位位值
2×4096 + 10×256 + 3×16 + 15

十六进制转十进制换算器把一个十六进制数改写成十进制,而与转二进制不同,这一页是真正的算术。一个十六进制数的值,等于每个字符乘以它所在位值的十六的幂、再把各项加起来,位数从最右边开始数、从零起算。2A3F 最右一位是 F,所以这一位值 15;往左一位的 3 值 3×16;再往左的 A 值 10×256;最前面的 2 值 2×4096。加起来是 10815。字母是出错的地方,而错法有两种。第一种是 A 必须先变成 10、F 必须先变成 15,然后才能相乘——把 A 读成 1 得到的答案看着像回事,但是错的。第二种是字母代表的数值要乘以它所在的位值,所以最后一位的 F 是 15,而往左挪一位的 F 是 240;字母不是「多少」,它是系数。另一半是十六的幂,而它有一个值得记住的形状:1、16、256、4096、65536 一路往上,每一项都是前一项的十六倍。把十六进制数从右往左对着这串数读,比现算幂更快。因为十六是 2 的幂,这串数也就是 2 的幂每四个取一个——16 是 2⁴、256 是 2⁸、65536 是 2¹⁶——这也解释了为什么每四位一组的位置正好对应一个十六的幂。页面上把整串加法印在答案旁边,所以结果可以逐项核对:2×4096 + 10×256 + 3×16 + 15 就是 10815,而任何一个字符错了,位值相加的结果都不会回到你预期的那个数。

十六的幂,从最右一位一直列到可接受的输入能达到的最左一位

位数幂数值
1316¹³4503599627370496
1216¹²281474976710656
1116¹¹17592186044416
1016¹⁰1099511627776
916⁹68719476736
816⁸4294967296
716⁷268435456
616⁶16777216
516⁵1048576
416⁴65536
316³4096
216²256
116¹16
016⁰1

十四行,从 16⁰ 到 16¹³,行数不是随手定的:十四位正是这一族能收下的最长输入,所以这张表覆盖了答案可能用到的每一个位,到这儿就停。从上往下读,就是按答案的位从右往左读——最后一行是最右边那个字符,第一行是最左边那个。中间一列把位数写成幂,也就是上面那串加法要乘的数;第三列是那个幂算出来的结果,也就是实际动手时乘的那个数。这些值与二进制那几页是重叠的:16 是 2⁴、256 是 2⁸、65536 是 2¹⁶,因为一个十六进制字符装着四个位。所以同一张表也回答了「四位一组当成数读时值多少」。它是固定的,不跟着你输入的数变。

公式

2A3F = 2×16³ + 10×16² + 3×16¹ + 15×16⁰ = 2×4096 + 10×256 + 3×16 + 15 = 10815

2A3F
要换算的那个十六进制数。字母不分大小写,2a3f 与 2A3F 是同一个值;前导零不改变任何东西,而前导负号会给出负的结果
16ⁿ
某一位对应的十六的幂,从最右边的零次幂开始数。最右一位值 16⁰,也就是 1;往左一位是 16¹,也就是 16;每往左一步就再乘一个十六
2、10、3、15
字符被读成的数值,字母这时已经换掉了——A 变成 10、F 变成 15,都发生在任何乘法之前。把 A 读成 1 正是这一行要拦的错,也是这道换算最常见的错法
2×4096
求和里的一项:字符的数值乘以它所在位值的幂。每个字符都贡献一项,包括本身是零的那些;只不过零项不改变结果,印出来的式子里直接省掉了
= 10815
各项加起来的总数。它是一个十进制数,而不是某个进制的数字串,所以这一页的答案可以直接拿去做下一步算术
14 位
能收下的最长输入,也就是 1FFFFFFFFFFFFF。十四位正好让数值达到 9007199254740991,再宽机器就分不开相邻的整数,所以更长的输入会被拒收,而不是照换不误

凡是机器写的数要跟人写的数放在一起比,就要把十六进制读成十进制。一个颜色码是三个通道、每个两个字符,而知道 FF 是 255、80 是 128,就是「用眼睛调色」与「按数值调色」的分界。尺寸是同一回事:十六进制的 400 是 1024,一个眼熟的分页大小;内存图里印着 0x100000 的一段是 1048576 字节,而要往里再加一段的人得知道这个数。核对校验和、比对哈希前缀、换算数据手册里的掩码,做的都是这道换算;读一个其实是十六进制的序列号或标识符,做的也是它。课程里这道题写作把十六进制转成十进制,通常要求把幂写出来,而这正是这一页印出来的那串加法:一个字符一项,字母已经换好。它也是另一个工具给出十六进制答案时用来验算的那一步,因为十进制总数是唯一一个所有其它写法都能拿来跟它比的数。

算例

  1. 读 2A3F

    1. 把十六的幂写在四个字符下面,从右往左:1、16、256、4096
    2. 把字母换成数值:A 是 10、F 是 15
    3. 逐项相乘:2×4096 是 8192、10×256 是 2560、3×16 是 48、15×1 是 15
    4. 四项相加:8192 + 2560 + 48 + 15 = 10815

    默认值,也是两个字母都要换的一条。A 不是 1、F 也不是 5——把字母当数字位读,答案会差到两千左右,错得还比较明显。更难发现的错是字母换对了、却乘错了位值。

  2. 一个字节,FF

    1. 两个字符,所以两位分别值 16 和 1
    2. F 是 15,左边那个字符贡献 15×16 = 240
    3. 右边那个字符贡献 15×1 = 15
    4. 240 + 15 = 255

    两个字符能装的最大值,也是 FF 是 255 而不是 256 的原因:范围从 00 起算。这一对值得直接记住,因为它在颜色值、按字节计的字段、以及任何长度恰好两个字符的十六进制串里都会出现。

  3. 读 B2

    1. B 是 11,所以左边那个字符贡献 11×16 = 176
    2. 右边那个字符贡献 2
    3. 176 + 2 = 178

    B 比 A 大一位,所以是 11×16 而不是 10×16——把 B 读成 11 还是读成 10,差出来的是十六,也就是整整一个十六进制位。同一个值在二进制那几页里当八位的例子用,它的二进制写法是 10110010。

  4. 最大的输入,1FFFFFFFFFFFFF

    1. 十四个字符,所以位值从 16¹³ 排到 16⁰
    2. 开头那个 1 值 16¹³,也就是 4503599627370496
    3. 十三个 F 都是 15,各自乘以自己那一位的幂
    4. 十四项加起来得到 9007199254740991

    十四项是这串加法最长的样子,而它与十进制那几页的 9007199254740991、二进制那几页的五十三位是同一个上界。到这个量级方法本身没有任何变化——还是那一遍遍的乘加,重复十四次——这一点才是这个例子值得看的地方。

局限

这一页的输入是十六进制串而不是十进制数,所以没有小数点可拒收:0 到 9 与 A 到 F 之外的字符会被拒收。输入最长十四位,也就是 1FFFFFFFFFFFFF,更长的会被带着说明拒收,而不是截断。前导零会被收下且不改变数值;前导负号会给出负的十进制结果——和是按数字位算出来的,符号最后加在总数上。输入不分大小写,而位值和一律用大写字母印。下面那张表列出从 16⁰ 到 16¹³ 的十六的幂,它是固定的、不跟着你输入的数变;它在那里是为了让你能查到任何一位的值。反过来的方向,也就是把十进制数写成十六进制,是另一页的事,这一页除了印出来的那串加法以外不对结果做任何运算。

常见问题

怎么手算十六进制转十进制?
把十六的幂写在字符下面,最右边写 1,每往左一步乘一个十六;然后把每个字符乘以它下面的幂,再把结果加起来。字母要先换掉:A 是 10、B 是 11、C 是 12、D 是 13、E 是 14、F 是 15。2A3F 因此是 2×4096 + 10×256 + 3×16 + 15,等于 10815。
A 到 F 这几个字母是什么意思?
它们依次是十到十五这六个值:A 是 10、B 是 11、C 是 12、D 是 13、E 是 14、F 是 15。十六进制需要十六个单字符,而十进制数字只给了十个,多出来的六个符号总要有来源,字母就是约定俗成的那一套。每个字母与数字位一样是系数,所以一个 F 值的是「十五乘以它所在位值」——最后一位是十五,往左一位就是 240。
这一页最大能换算多大的十六进制数?
十四位。上界是 1FFFFFFFFFFFFF,换算结果是 9007199254740991,也就是十进制那几页说的五十三个二进制位。更长的串会被带着说明拒收,而不是截短或四舍五入——超过这个宽度机器分不开相邻的整数,答案不可信。
为什么 FF 是 255 而不是 256?
因为计数从 00 开始,不是从 01 开始。两个十六进制字符一共有 256 种不同的串,从 00 排到 FF,所以它们能表示的最大值是 255——比可能的种数少一。同一个差一在二进制里也出现:八个位从 0 排到 255,这就是为什么凡是按字节说话的语言里,一个字节的上限都是 255。
十六进制转十进制与转二进制是一回事吗?
不是。转二进制是替换,不需要算术:每个字符变成四个位,方法就完了。转十进制是带权的求和,因为各位的值是十六的幂而不是二的幂——2A3F 是 2×4096 + 10×256 + 3×16 + 15,而字母要先变成数值才能乘。同一个串的二进制结果是 10101000111111,两个答案是同一个量的两种写法。
为什么页面要印一张十六的幂的表?
因为那些幂就是和里每一项要乘的权,查表比现算快。表从 16⁰ 列到 16¹³,对这一页来说是穷尽的:十四位是能收下的最长输入,任何被接受的答案都不会用到表里没有的位。把它和结果面板里那串加法对着看,就能知道哪个字符对应哪个权。

参考资料

相关计算器