🔢进制转换 - 二进制、十六进制在线互转
在二进制、八进制、十进制、十六进制之间互相转换,同时给出一个 2 到 36 之间任选的进制。输入一次,四五种结果同时出来,每一行都能单独复制。粘贴 0xFF、0b1011、0o17 这种带前缀的数会自动切换到对应进制;从文档或代码里复制的 1111 0000、DE AD BE EF、1_000_000、1,000,000 也能直接认,不用先删分隔。用 BigInt 计算,几十上百位的整数也精确到最后一位,不会像普通计算器那样在 16 位十进制数以后出错。全部在浏览器本地实时计算。
正在加载工具...
如何使用进制转换
- 1选择输入数值所用的进制;直接粘贴带 0x、0b、0o 前缀的数时会自动切换
- 2输入整数,可以带负号,可以带空格、下划线或千分位逗号
- 3查看二、八、十、十六进制和自定义进制的结果,点「复制」
- 4需要其他进制时,在「自定义进制」里填 2 到 36 之间的数
常见问题
- 能转多大的数?会不会丢精度?
- 不限位数。本工具用 BigInt 逐位计算,实测 2 的 64 次方减 1(18446744073709551615)转十六进制是 ffffffffffffffff,2 的 128 次方减 1(UUID、IPv6 地址的大小)转十进制是 39 位的 340282366920938463463374607431768211455,都精确到最后一位。普通的 JavaScript 数字和很多计算器只能精确到 2 的 53 次方(9007199254740992),再大就会出错:比如用 parseInt 把 18446744073709551615 转十六进制,得到的是错误的 10000000000000000。
- 0x、0b、0o 前缀是什么意思?
- 这是程序里标明进制的写法:0x 表示十六进制,0b 表示二进制,0o 表示八进制(C 语言里也常用开头的 0 表示八进制)。在十进制下粘贴 0xFF,工具会自动切到十六进制并提示,结果是 255;-0x1F 会识别成 -31。但在十六进制下,0b1 里的 b 本身就是数字,所以按十六进制的 B1 计算,结果是 177,不会被当成二进制前缀。
- 常用的数在各进制下是多少?
- 几个常见的对照,都可以在本工具里验证:255 = 0xFF = 0o377 = 0b11111111(一个字节的最大值);65535 = 0xFFFF(两个字节);2147483647 = 0x7FFFFFFF(32 位有符号整数的最大值);4294967295 = 0xFFFFFFFF,二进制是 32 个 1;Linux 文件权限 755 是八进制,等于二进制 111 101 101,三组分别对应所有者、同组、其他人的读写执行;0xDEADBEEF 等于十进制 3735928559。
- 负数怎么转?能看补码吗?
- 负数按「负号 + 绝对值」转换,比如 -255 转十六进制是 -ff,这是数学上的写法。程序里内存中的负数用补码表示,要看位宽:-1 在 8 位里是 0xFF,在 32 位里是 0xFFFFFFFF。本工具目前不按位宽显示补码;需要时可以自己换算:n 位的补码等于 2 的 n 次方加上这个负数,比如 32 位下 -1 就是 4294967296 - 1 = 4294967295,再转十六进制。
- 36 进制有什么用?字母大小写有区别吗?
- 36 进制用 0~9 加 26 个字母,是能只用数字和字母表示的最大进制,常用来把长数字缩短成短链接、短 ID:比如 18446744073709551615 在 36 进制里只有 13 位 3w5e11264sgsf,10 亿是 gjdgxs。输入时字母不分大小写,FF 和 ff 一样;结果统一用小写字母。
- 支持小数吗?
- 只支持整数。小数换进制时经常变成无限循环,比如十进制的 0.1 在二进制里是 0.000110011… 无限重复,这也是程序里 0.1 + 0.2 不等于 0.3 的原因。输入带小数点会提示不合法。另外 1,5 这种写法不会被当成 15:逗号只在每 3 位一组(1,000,000)时才当作千分位去掉。
- 文件会上传服务器吗?
- 不会。所有处理都在你的浏览器本地完成,没有任何网络上传,关闭页面即清除。
- 需要注册或付费吗?
- 不需要。本站完全免费,无需注册登录,没有次数限制。