十六进制转十进制转换器

→
十进制 = 每一位十六进制 × 16 的位权,再全部相加

十六进制转十进制:让一个十六进制值变得有意义

这个换算在做什么

它把一个 16 进制值读出来,再用 10 进制复述。十六进制对机器、也对比对位模式的人都很方便,但阈值、字节大小以及任何需要人一眼判断的场合,要的都是十进制。当某个工具丢给你一个值却不再解释时,你需要的就是这个方向。

位权是 16 的幂

从右往左,每一位分别乘以 1、16、256、4096 等等。1E90FF 等于 1 × 16 的五次方加上 14 × 16 的四次方,一路加下去得到 2003199。这个加权求和在每个进制里都一样,变化的只有权值,所以同样的方法在二进制和八进制里照样管用。

十六进制转十进制对照表

调试和网页工作中经常出现的十六进制值及其十进制对应值。值得记住的是那些整十六进制数,它们标出了字节和内存页的边界。

十六进制十进制
00
11
F15
1016
7F127
A5165
FF255
10004096
FFFF65535
DEADBEEF3735928559

人们实际在解读什么

反复出现的是三件事:读一个颜色通道、把内存地址和某个边界做对照、把截断的哈希变成可比较的数字。颜色最好懂:0x1E90FF 拆开是 30、144 和 255,说明蓝色通道已经饱和而红色很弱。同一套三步读法适用于任何被打包的值,先按字节拆开就会轻松很多。

先拆分,再转换

六位颜色码或很长的地址,按两位一组来读会容易得多,因为每一组就是一个字节。一次性转换整个值只适合要一个答案,先拆分才能看出是哪一个字节反常,而那通常才是你真正想问的问题。

常见问题

怎样手算十六进制转十进制?

把每一位乘以它的位权——从右往左是 1、16、256、4096 等等——再把结果相加。记住 A 是 10、B 是 11,一直到 F 是 15。1E90FF 就是 1048576 + 917504 + 36864 + 0 + 240 + 15,等于 2003199。

为什么内存地址看起来都是很长的一串十六进制?

因为它们天然对齐到字节和字边界,而十六进制的一位正好能和这些边界对上,十进制做不到。两位十六进制是一个字节,所以地址的前几位描述它落在哪一页,后几位描述页内偏移。

可以粘贴带 0x 前缀的值吗?

可以,前缀会被识别并在转换前去掉,所以从调试器或源码里直接复制来的值无需编辑。如果前缀与你所在页面的进制不符,工具会报错而不是悄悄忽略,避免一个被误读的值溜过去。

十六进制值最大能有多大?

六十四位乃至更大。这个范围的顶端已经超出普通浮点运算能精确表示的区间,所以转换使用精确整数运算,每一位都正确,而不是电子表格那种四舍五入后的答案。

把哈希前缀当作数字有意义吗?

算术上有,实用上没有。把哈希的头几个字节转成十进制,对发现规律或写脚本做比较有用,但截断后的哈希已经失去了让它成为哈希的性质,所以不要把十进制形式当成独立的标识符来用。

复制下面的代码并粘贴到您的网站,即可添加此换算器。

<!-- 十六进制转十进制 -->
<iframe src="https://unitflow.net/zh/embed/hex-to-decimal" title="十六进制转十进制" width="100%" height="420" loading="lazy" style="border:0;max-width:100%;display:block"></iframe>
<p><a href="https://unitflow.net/zh/hex-to-decimal" target="_blank" rel="noopener">由 UnitFlow 提供</a></p>