看代码遇到 0xFF、配 Linux 权限碰到 755、调接口看到一串二进制掩码,第一反应都是"这到底是十进制的几"。手算要按权展开,位数一多就容易错。
这篇用 NBTools 的进制转换工具讲清楚:怎么在二/八/十/十六进制之间互转,输入时能偷哪些懒,以及超过 JavaScript 安全整数的大数怎么处理。工具在浏览器本地计算,内容不上传服务器。
一次算出四种进制
先顶部选"从哪种进制输入",再填入数值,下方会同时列出四种进制的结果,每行右侧有复制按钮——不用反复切换、反复算。
| 场景 | 输入 | 十进制结果 | 说明 |
|---|---|---|---|
| 颜色值 | FF(十六) | 255 | 常见于 CSS / 位图通道 |
| Linux 权限 | 755(八) | 493 | rwxr-xr-x 的权限掩码 |
| 位掩码 | 1010 1101(二) | 173 | 带空格也能正常识别 |
| 容量换算 | 1024(十) | 0x400 | 十六进制看内存地址更直观 |
输入能偷的懒:空格、下划线、0x 前缀
从别处复制来的数字常常带着分隔符或前缀,手工清理很烦。本工具会自动忽略这些干扰字符:
- 空格 / 下划线 / 逗号:会被自动剔除,所以
1010 1101、1_000_000、1,024都能直接粘贴。 - 进制前缀:输入非十进制时,开头的
0x(十六)、0o(八)、0b(二)会被自动去掉,0xFF直接粘贴即可。 - 大小写:十六进制字母不区分大小写,
ff和FF一样,输出统一为大写。
注意:一旦输入了当前进制以外的字符(比如十进制里出现字母),会直接提示"不是合法的十进制数字",不会给出错误结果。
大数也能转:不受 JS 安全整数限制
很多人用浏览器控制台或随手写的脚本做进制转换,会遇到一个坑:JavaScript 的 Number 只能安全表示到 2⁵³−1(9007199254740991),再大就开始丢精度,转出来的十六进制是错的。
本工具底层用大整数运算库(big-integer),不做浮点近似,因此像下面这种远超安全范围的数也能准确互转:
123456789012345678901234567890这类几十位的数,四种进制结果都精确。- 哈希值、长整型 ID、加密场景里的大数,不会因为精度丢失而对不上。
位宽与字节数有什么用
结果区底部会显示"位宽 N 位 · 约 M 字节"。位宽就是这个数写成二进制需要多少位,字节数是位宽除以 8 向上取整。这两个数在以下场景很实用:
- 估存储空间:一个 ID 位宽 64 位 → 8 字节,据此判断用
BIGINT还是INT。 - 判断溢出:位宽超过 32 位时,放进 32 位整型的字段就会溢出,需要换更大类型。
- 设计协议:做二进制协议或位运算时,先确认数值落在几位以内。
另外工具还提供"填入当前时间戳"按钮,一键把当前以秒为单位的 Unix 时间戳填进十进制输入框,方便你看它对应的十六进制与位宽。
常见问题
负数怎么转
直接带负号输入即可,例如十进制 -255 会得到十六进制 -FF。位宽按绝对值计算(-255 的位宽是 8 位),符号单独保留。
0xFF 这样的前缀要手动删吗
不用。选择"从十六进制输入"后,开头的 0x(以及八进制的 0o、二进制的 0b)会被自动忽略,整串粘贴进来就行。
755 为什么是八进制
755 是 Linux/Unix 文件权限的写法,按八进制理解时等于十进制的 493,对应"拥有者可读可写可执行、同组和其他人可读可执行"。要算它,请切到"从八进制输入"再填 755。
输入带空格或逗号会报错吗
不会。空格、下划线、逗号会被自动剔除,1,024 等价于 1024,1010 1101 等价于 10101101。
转出来的十六进制是小写还是大写
统一输出大写,方便直接用在代码或文档里;输入时用小写也不影响。
数据会上传吗
不会。转换在浏览器本地完成,输入内容不上传服务器。
工具入口
进制转换立即使用 →二进制/八进制/十进制/十六进制互转,支持大数与负数