进制转换器 — 二进制、十六进制、十进制、八进制及 2–36 进制

在二进制、八进制、十进制、十六进制、32 进制、36 进制以及任意 2–36 进制之间转换任意大小的整数,并显示补码。

可在任意输入框中输入。支持 0x、0b 和 0o 前缀、开头的负号,以及数字之间的空格、逗号或下划线。

16 位 · 2 字节(绝对值)· 5 位十进制数

补码(固定位宽)

位宽位模式Hex有符号无符号
8 位
溢出,已截断
1110 11110xEF-17239
16 位1011 1110 1110 11110xBEEF-1665748879
32 位0000 0000 0000 0000 1011 1110 1110 11110x0000BEEF4887948879
64 位0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 1011 1110 1110 11110x000000000000BEEF4887948879

超出某个位宽的范围时,位模式只保留低位,这与 C、Java 或 Go 中强制转换为 int8_t/int16_t/int32_t/int64_t 的结果相同。

完全在浏览器中运行。你输入的任何内容都不会发送给我们或被存储。 浏览全部免费工具.

发现问题,或者觉得哪里可以更好?每条消息我们都会阅读,并尽快修复。

这款进制转换器同时以二进制、八进制、十进制、十六进制、32 进制和 36 进制显示一个整数,另外还可以显示你选择的任意 2 到 36 进制。每一行都可以编辑:在十六进制栏输入一个值,二进制、十进制等其他栏就会随之更新。0x、0b 等前缀、负号,以及数字之间的空格、逗号或下划线都能识别,所以可以直接从代码或数据手册中粘贴。如需一次转换大量数值,切换到列表模式,每行粘贴一个数字,就能得到一张包含所有进制的表格,可复制或下载为 CSV。

数字以任意精度整数处理,所以 64 位 ID、256 位哈希值或 300 位的十进制数都能精确转换,而基于普通 JavaScript 数字的工具会悄悄把超过 9,007,199,254,740,991 的数四舍五入。补码表显示了该值在 8、16、32 和 64 位有符号和无符号整数中的存储方式,并标出溢出。小数会被拒绝并给出说明,而不是近似转换:很多十进制小数没有精确的二进制形式。

使用方法

  1. 在与数字所用进制对应的栏中输入数字,例如在“十六进制”栏输入 0xBEEF,或在“二进制”栏输入 1011。
  2. 从其他栏读取其他进制的结果;每栏都可以用各自的按钮复制。
  3. 如需不常见的进制,在“任意进制”菜单中选择,然后在该栏中输入。
  4. 查看补码表,了解固定位宽下的位模式,或负数在十六进制中的样子。
  5. 如果代码中需要纯字符串,请关闭数字分组。

常见问题

可以一次转换一组数字吗?

可以。选择“数字列表(批量)”,粘贴最多 2,000 个数字,每行一个,并选择输入进制(或保持“自动”,它会识别 0x、0b 和 0o 前缀)。每一行都会被转换为十进制、二进制、八进制、十六进制、32 进制、36 进制以及你另选的一种进制;无法解析的行会单独显示错误,其余行照常转换。可复制表格或下载为 CSV。

二进制怎么转十进制?

把每一位二进制数字乘以 2 的位置次幂(从右边第 0 位开始数),再把结果相加。以 1011 为例:1×8 + 0×4 + 1×2 + 1×1 = 11。也可以直接在上方的“二进制”栏输入,然后读取“十进制”栏。

十六进制怎么转十进制?

每一位十六进制数字的权重是其右边一位的 16 倍,A–F 代表 10–15。以 0x2F 为例:2×16 + 15 = 47。每一位十六进制数字也恰好对应四位二进制数字(F = 1111),这就是为什么十六进制被用作二进制的紧凑写法。

什么是补码?

补码是计算机存储负整数的方式。在 n 位整数中,负数 −x 存储为 2^n − x。所以 8 位的 −1 是 11111111(0xFF),−128 是 10000000。同一个位模式按无符号读是 255,按有符号读是 −1;表格会同时显示两者。补码的好处是有符号和无符号数的加减法运算方式完全相同。

为什么我的转换器转换大数时结果不对?

大多数转换器使用 JavaScript 数字,它是 64 位浮点数,只能精确表示不超过 2^53 − 1(9,007,199,254,740,991)的整数。超过这个值,数字就会被悄悄四舍五入,所以 64 位数据库 ID 或 Twitter/X 的 snowflake ID 会被转错。本转换器使用 BigInt,没有大小限制。

能把 0.1 这样的小数转换成二进制吗?

这里不行,这是有意为之。十进制的 0.1 在二进制中是无限循环小数(0.000110011…),所以任何有限长度的结果都是近似值,而这种舍入正是大多数编程语言中 0.1 + 0.2 不等于 0.3 的原因。本工具只精确转换整数;如需处理小数,请先把它们放大为整数(例如以美分而不是美元为单位存储金额)。

各种进制的用武之地

• 二进制(2 进制):位标志、网络掩码、硬件寄存器、权限位字段。

• 八进制(8 进制):Unix 文件权限,755 表示 rwxr-xr-x,因为每一位八进制数字恰好对应三位二进制(所有者、组、其他人)。

• 十六进制(16 进制):内存地址、颜色代码(#244B3F)、字节转储、哈希值、MAC 地址和 Unicode 码位(U+1F332)。

• 32 进制(0–9、A–V):紧凑的标识符。注意,TOTP 密钥使用的 RFC 4648 Base32 是一种字节编码,字母表为 A–Z、2–7,与这里的 32 进制数不是一回事。

• 36 进制(0–9、A–Z):最紧凑的不区分大小写的字母数字表示法,用于短 ID 和短链接服务;JavaScript 的 Number.prototype.toString(36) 生成的就是它。

固定位宽整数与溢出

编程语言以固定位宽存储整数:int8/uint8(一个字节)、int16、int32 和 int64。有符号 n 位整数的范围是 −2^(n−1) 到 2^(n−1) − 1,所以 int8 是 −128 到 127,int32 是 −2,147,483,648 到 2,147,483,647。无符号版本的范围是 0 到 2^n − 1。

当一个值放不下时,大多数语言只保留低 n 位。这就是为什么把 200 存入 int8 后读出来是 −56,以及为什么 32 位 int 中 2,147,483,647 + 1 会变成 −2,147,483,648。这里的补码表会显示截断后的位模式,并把该行标记为溢出,便于预测 C、Java、Go 或 Rust 中的类型转换会得到什么结果。

相关免费工具

  • 取色器与颜色转换 — 从屏幕任意位置吸取颜色,或在 HEX、RGB 和 HSL 之间即时转换。
  • 哈希生成器 — 用 MD5、SHA-1、SHA-256、SHA-384、SHA-512 和 CRC32 计算文本或文件的哈希值,校验校验和,或计算 HMAC。文件绝不离开你的设备。
  • Unix 时间戳转换 — 把秒、毫秒、微秒或纳秒级时间戳转换为任意时区的日期,也可反向转换。实时时钟、批量模式、代码片段。
  • 在线计算器 — 简洁的 iPhone 风格计算器,支持键盘和数字小键盘。百分比、正负号、历史记录、一键复制——无广告,无需安装。