跳到主要内容
实用工具2026-05-126 分钟阅读

在线进制转换器:2–36 进制互转与大整数

什么是进制转换

进制转换(Number Base Conversion)是在不同数字表示系统之间转换数值的过程,用在线 number base converter 可以瞬间完成。计算机科学中常用的进制有:

进制基数数字字符常见用途
二进制(Binary)20, 1计算机底层、位运算
八进制(Octal)80-7Unix 文件权限(chmod 755)
十进制(Decimal)100-9人类日常计数
十六进制(Hexadecimal)160-9, A-F内存地址、颜色代码、哈希值
自定义(Base N)2–360-9 再接 a–z短码、Base36 ID、教学演示

为什么需要进制转换

  1. 调试底层代码:查看内存地址、字节数据需要十六进制
  2. 位运算:位掩码、位移操作需要二进制思维
  3. 颜色处理:CSS 颜色用十六进制(#FF5733)
  4. 网络配置:子网掩码涉及二进制和十进制转换
  5. 文件权限:Linux 权限用八进制表示(chmod 755)
  6. 短标识符:Base36(0-9a-z)把大整数压成更短的可打印串,常见于票据号与邀请码

进制转换方法

手动转换技巧

十进制 → 二进制(除 2 取余法):

13 ÷ 2 = 6 ... 1
 6 ÷ 2 = 3 ... 0
 3 ÷ 2 = 1 ... 1
 1 ÷ 2 = 0 ... 1
结果:1101

十进制 → 十六进制(除 16 取余法):

255 ÷ 16 = 15 ... 15 (F)
 15 ÷ 16 = 0  ... 15 (F)
结果:FF

编程语言中的进制转换

JavaScript / TypeScript:

const num = 255;

num.toString(2)   // "11111111"(二进制)
num.toString(8)   // "377"(八进制)
num.toString(10)  // "255"(十进制)
num.toString(16)  // "ff"(十六进制)

// 字符串 → 数字(务必写明 radix)
parseInt("ff", 16)   // 255
parseInt("11111111", 2) // 255

// 超过 Number.MAX_SAFE_INTEGER 必须用 BigInt
BigInt("0x1fffffffffffff") + 1n

Python:

num = 255

bin(num)  # "0b11111111"
oct(num)  # "0o377"
hex(num)  # "0xff"

# 字符串 → 数字(任意 2–36)
int("ff", 16)      # 255
int("z", 36)       # 35

Go:

import "strconv"

num := 255

strconv.FormatInt(int64(num), 2)   // "11111111"
strconv.FormatInt(int64(num), 8)   // "377"
strconv.FormatInt(int64(num), 16)  // "ff"

// 字符串 → 数字
strconv.ParseInt("ff", 16, 64)      // 255
strconv.ParseInt("11111111", 2, 64) // 255

如何使用在线进制转换器

使用 ToolVault 工具匣 的 进制转换器:

  1. 输入整数值(可带匹配进制的 0x / 0b / 0o 前缀)
  2. 选择输入进制:预设 2/8/10/16,或「自定义」填 2–36
  3. 需要时切换字母大小写(A–Z / a–z),或勾选额外输出某一进制
  4. 切到「批量」可每行一个数同时转换;非法位会标出位置与可用字母表
  5. 一键复制所需格式

工具内部用 BigInt 逐位累加,雪花 ID、64 位全 F 十六进制等超过 JavaScript 安全整数的值不会静默舍入。

常见进制对照表

十进制二进制八进制十六进制
0000000
1000111
81000108
10101012A
16100002010
64100000010040
1281000000020080
25511111111377FF

开发者真错的那些转换

十六进制转二进制是白送的(每个十六进制位恰好 4 bit——背一次 16 个映射,无需算术)。坑都在别处:JavaScript 里超过 2^53 的十六进制静默丢位(0x1FFFFFFFFFFFFF + 1——双精度尾数之外需要 BigInt 或字符串数学);前导零八进制遗留(有的语言当八进制有的当十进制——JSON 禁前导零就是为此);子网掩码的十六进制(FF=255 是唯一出现的值,/24 = FF FF FF 00 被网络人当模式背)。转换器用显式 BigInt 字符串数学绕开这一切——语言的隐式行为正是工具要避开的 bug 源。

为什么 IPv4、MAC、颜色、Unicode 都是十六进制

十六进制赢下的领域有一个共同点:人读机器对齐的值——IPv4 点分十进制(255 恰好两位十六进制)、MAC 地址(48 bit 写 12 个十六进制)、CSS 颜色(#RRGGBB 字节对齐)、Unicode 码点(U+4E2D——十六进制就是身份)。十六进制位干净映射到字节(每字节 2 位),人读形式成为机器值的直接窗口。base64 赢了传输(密度——每字符 6 bit);base58 赢了地址(看错字符要付钱)。为系统选进制的三个需求名:对齐(hex)、密度(base64)、人抄安全(base32/58)。

2–36 之外在谈什么

语言标准库里的「任意进制」几乎都停在 36:数字位用完 0–9 之后,只剩 26 个拉丁字母。Base36 把十进制长整数压短,适合邀请码;再往上就要换编码体系(Base58/64),那已经不是「同一整数换字母表」而是面向字节串的编码。若你的输入里出现 +、/ 或填充符 =,那是 Base64,不是进制转换器该吃的文本——先确认你手里的是「整数的另一套写法」,还是「字节的可打印封装」。

浮点:揭示表示论的那个转换问题

「0.1 的二进制」是进制停止做算术、开始讲表示论的地方:0.1 的十进制在二进制无限循环(0.000110011...)——这正是每个 IEEE 754 语言里 0.1 + 0.2 ≠ 0.3 的原因。显示实际存储值的转换器(0.1 的 double 位模式 0x3FB999999999999A)比任何解释讲得都多。精确小数(钱)的答案从来不是换个进制——是换个类型(整数分、decimal 库、有理数);更精确地在进制间转换 0.1 修不了表示本身装不下的问题。本站进制转换器只接受整数:带小数点的输入会直接报错并指出非法位,避免「截断」伪装成成功。

FAQ

为什么程序员偏爱十六进制?

十六进制是二进制的「人类友好」缩写。1 位十六进制 = 4 位二进制,所以 0xFF 就是 11111111。十六进制在表示字节数据、内存地址时比十进制更直观,因此 byte converter 是底层开发者的常用工具。

八进制还有什么用?

主要用于 Linux 文件权限。chmod 755 中的 755 就是八进制:7=rwx,5=r-x。也用于某些编程语言的转义字符(\012 = 换行符)。

二进制如何快速转十六进制?

每 4 位二进制对应 1 位十六进制。从右往左分组:1111 1111 → F F → FF。这是计算机内部的直接映射,用 number base converter 可以验证任意数值。

批量转换适合什么场景?

从日志里粘贴一列雪花 ID、一串十六进制常量、或要对账的 Base36 短码时,用批量模式每行一个数即可;坏行单独报错,不拖垮整批。

排查注记

「开发者真错的那些转换」一节先说十六进制转二进制是白送的(每位恰好 4 bit),把火力集中在真出事的场景:2^53 以上静默丢位、前导零八进制的历史分歧——工具用显式 BigInt 字符串数学绕开语言的隐式行为。浮点一节把 0.1 + 0.2 ≠ 0.3 归到表示论:精确小数的答案从来不是换进制、是换类型(整数分、decimal 库),所以转换器只接受整数,带小数点直接报错,避免「截断」伪装成成功。「2–36 之外」还给了个判别句:输入里出现 +、/、= 那是 Base64——先分清手里是「整数的另一套写法」还是「字节的可打印封装」。


ToolVault 工具匣 出品的开发者指南。首页 汇集了更多浏览器本地工具。