开发编码 本地计算 开箱即用 内置示例 不留痕迹

进制转换器

支持 2~36 进制任意互转,内置 BigInt 大数精确计算,十六进制 FF 与十进制 255 一键互换。学习计算机基础、调试程序、看内存地址都好用。

进制转换在二进制、八进制、十进制、十六进制之间换算整数。编程里十六进制常用于内存地址、颜色值与字节表示,二进制用于理解位运算与权限标志,八进制出现在文件权限(如 chmod 755)里。工具支持 2~36 任意进制,并用 BigInt 精确计算,超大整数不丢精度。

换算规则本身很简单:十进制转 N 进制用「除 N 取余、逆序排列」;而 2、8、16 进制同属 2 的幂,可以按位分组互转(一位十六进制等于四位二进制)。需要注意小数的表示方式在不同语言里口径不一,本工具聚焦整数精确换算。

使用步骤

  1. 在输入框填写待换算的数字,十六进制可直接写 a-f 字母。
  2. 选择它的原始进制(2~36)与目标进制;不确定时先用十进制核对一遍。
  3. 输入即时出结果,并同时列出 2/8/10/16 进制对照,便于交叉验证。
  4. 超大整数会完整显示位数,不会变成科学计数法。

计算原理与示例

进制转换通用方法

通用方法:十进制整数转 N 进制用「除 N 取余,逆序排列」。例如 255 转二进制:255÷2=127 余 1,不断除下去余数逆序得 11111111。

十六进制与二进制互转

十六进制与二进制互转可以「一位拆四位」:F = 1111,所以 FF = 11111111,不需要经过十进制。

超大整数精度说明

本工具使用 BigInt 精确计算,超过 Number.MAX_SAFE_INTEGER 的超大整数(如 2^100)也不会丢精度。

代码示例

JavaScript 进制互转(含大整数)

// 常规范围
parseInt("ff", 16)   // 255
(255).toString(16)    // "ff"

// 超过 Number.MAX_SAFE_INTEGER 用 BigInt
BigInt("0xffffffffffffffff")            // 18446744073709551615n
BigInt("18446744073709551615").toString(16) // "ffffffffffffffff"

Shell 命令行里的进制换算

# 十六进制 → 十进制
printf "%d\n" 0xff

# 十进制 → 十六进制
printf "%x\n" 255

# 任意进制(bc)
echo "obase=16; 255" | bc

常见问题

为什么十六进制在编程里这么常用?

一位十六进制正好对应 4 位二进制,一个字节(8 位)用两位十六进制就能表示(如 0xFF = 255),比二进制短、比十进制直观,所以内存地址、颜色值、MAC 地址都用它。

二进制的小数怎么转换?

小数部分用「乘 2 取整」法,且很多十进制小数(如 0.1)在二进制下是无限循环小数,这正是浮点数误差的来源。本工具只处理整数转换以保证精确。

36 进制是怎么回事?

0~9 加上 26 个英文字母正好 36 个符号,所以最大可表达 36 进制。部分短链接服务就是用高进制把长 ID 压缩成短字符串的。

十进制转二进制怎么快速算?

用「除 2 取余、逆序排列」:不断用商除以 2 并记下余数,直到商为 0,再把余数倒着读。例如 13 → 1101(13÷2 余 1、6÷2 余 0、3÷2 余 1、1÷2 余 1,倒序即 1101)。

二进制和八进制、十六进制之间怎么转最方便?

用「分组法」直接转,不必经过十进制:二进制转八进制每 3 位一组、转十六进制每 4 位一组,反向则一位八进制拆成 3 位、一位十六进制拆成 4 位。例如 十六进制 FF = 11111111,八进制 377 = 11111111。

十六进制字母大写和小写有区别吗?

没有区别。十六进制里 A~F 与 a~f 表示同一数值,编程语言和配置文件两种写法都认。习惯上常量与内存地址用大写(0xFF),字符串输出和哈希值常用小写。

编程里的 0x、0b 前缀是什么意思?

那是不同语言表示进制的字面量前缀:0x 表示十六进制(0xFF = 255),0b 表示二进制(0b1010 = 10),0o 表示八进制。输入本工具时去掉前缀只留数字即可,以免前缀被当成非法字符。

延伸阅读

来自本站原创文章,讲清这个工具背后的算法与口径。