进制转换工具
在二进制、八进制、十进制、十六进制之间任意转换整数值,基于 BigInt 计算可处理上百位的超大整数,同时输出四种进制的表示、每 4 位一组的二进制分组对照与位宽,负数与 0x/0b/0o 前缀均可识别。
数据来源:ECMA-367 BigInt 与 RFC 类位置计数法(基数 2/8/10/16)
二进制按 4 位分组对照(1 组 = 1 个十六进制位)
| 组序 | 4位二进制 | 对应十六进制 | 权重位置 |
|---|---|---|---|
| 1 / 10 | 1111 | F | 2^36 起 |
| 2 / 10 | 1111 | F | 2^32 起 |
| 3 / 10 | 1111 | F | 2^28 起 |
| 4 / 10 | 1111 | F | 2^24 起 |
| 5 / 10 | 1111 | F | 2^20 起 |
| 6 / 10 | 1111 | F | 2^16 起 |
| 7 / 10 | 1111 | F | 2^12 起 |
| 8 / 10 | 1111 | F | 2^8 起 |
| 9 / 10 | 1111 | F | 2^4 起 |
| 10 / 10 | 1111 | F | 2^0 起 |
输入:1099511627775(按十进制(0-9)解析) BIN 1111111111111111111111111111111111111111 OCT 0o17777777777777 DEC 1099511627775 HEX 0xFFFFFFFFFF
转换基于 BigInt,位数不受双精度浮点限制(超过 2^53 的十进制整数用 Number 会丢精度,本工具已单独提示)。输入时 0x、0b、0o 前缀可省略,工具会按你选的进制解析,若填了前缀则以前缀为准;负号支持任意进制,输出中负数保留在最前面。每 4 位二进制恰好对应 1 位十六进制,因此查表法手算时可从分组表直接读出 HEX。
本页所有计算在浏览器内完成,输入内容不会被上传。
计算口径
位置计数法下,输入串按「累乘基数再加下一位」的方式先转成整数(本工具直接调用 BigInt 的按进制解析),再由该整数对目标基数取余输出字符串。二进制每 4 位一组恰好是 0—15,对应一个十六进制数字;每 3 位一组对应一个八进制数字。BigInt 的 toString(2/8/16) 输出的负数形式为 -1010、-ff 等,负号在进制之前。
使用说明
- 从报错日志里复制 0x 地址或掩码时,直接粘贴并选十六进制
- 做子网掩码、颜色位域拆解时对照分组表的 4 位二进制与十六进制
- 需要无符号 32 位值时先算十进制,再用 4294967296 取模
常见问题
为什么 JS 里 9007199254740993 变成 …992?
因为 JS 的 Number 是双精度浮点,只能精确表示 2^53−1(9007199254740991)以内的整数,超出的奇数会被舍入。本工具用 BigInt 计算,因此上百位也能精确转换;结果里的提示行会告诉你该值是否已超出安全范围。
十六进制的字母要大写还是小写?
数值上等价。约定:内存地址、MAC 地址、颜色值多用小写(如 #4a7cf0),而协议文档与校验码常用大写(如 FF)。本工具 HEX 输出统一大写,便于与十进制区分。
能转小数吗?
不能。小数部分的进制转换是乘 2 取整的无限过程(如 0.1 在二进制里是循环),结果不唯一且有精度问题,本工具只处理整数;若输入含小数点会被判为非法字符。