进制转换(2 / 8 / 10 / 16 / 36)
转换计算所有处理都在浏览器本地完成,数据不上传服务器
输入
输出
把一个数在二、八、十、十六、36 进制之间互转,五种进制的结果一次全部列出,省得来回切换。输入支持 0x、0o、0b 前缀自动识别,下划线和空格可以当分隔符直接粘。底层用 BigInt 而不是普通数字 —— 普通数字超过 2 的 53 次方就会丢掉尾数,转一个雪花算法 ID 会得到看着正常、其实已经错了的结果,而且不会报任何错。
功能
- 2、8、10、16、36 进制结果一次全部显示
- 输入前缀自动识别:0x 十六进制、0o 八进制、0b 二进制
- 任意长度整数都精确,19 位雪花 ID、订单号也能一位不差
- 顺带给出二进制位数,以及是否落在 64 位有符号整数范围内
- 下划线、空格分隔符可直接粘贴,不用先手工清理
- 输入前缀与所选进制冲突时直接报错,不会默默选一个
- 小数会明确拒绝(0.1 在二进制里是无限循环小数,没有精确答案)
使用方法
- 把数字粘进输入框,带 0x / 0o / 0b 前缀会自动识别
- 需要时手动指定输入进制,并选择是否加前缀、是否大写
- 五种进制的结果同时出现
- 点「复制」取走结果
常见问题
- 为什么大整数要特殊处理?
- JavaScript 的普通数字是双精度浮点,超过 2 的 53 次方之后相邻整数就无法区分了:1234567890123456789 会被静默变成 1234567890123456800。而这个量级恰好就是雪花 ID 与自增主键的常见位数,所以本工具全程使用 BigInt,不做任何浮点运算。
- 为什么 36 进制的结果没有前缀?
- 0x、0o、0b 是 JavaScript 自己定义的三种写法,36 进制没有通用前缀 —— 随便造一个会让结果粘回代码里无法解析,反而不如不加。
- 支持小数吗?
- 不支持,而且这不是偷懒:十进制的 0.1 在二进制里是无限循环小数,任何有限位数的输出都是近似值。真实的进制转换需求绝大多数针对整数,所以这里只做整数并明确拒绝小数。
- 「需要无符号 64 位」是什么意思?
- 该数超过了 2^63-1,超出了有符号 64 位整数的表示范围。数据库的 BIGINT 分有符号与无符号两种,写库前需要先确认列的类型,否则会溢出报错或被截断。
相关工具
时间戳转换
转换计算把 Unix 时间戳还原成日期时间,或把日期时间算成时间戳。秒与毫秒自动识别,可选常用时区,结果逐行可复制,还能批量转换与导出。全部在浏览器本地完成。
哈希计算
编码加密算出文本的 MD5、SHA-1、SHA-256 或 SHA-512 摘要,中文按 UTF-8 字节计算,结果与 openssl、sha256sum 逐位一致。全部在本地完成,不上传。
颜色转换
转换计算在 HEX、RGB、HSL 与 HSV 之间互转颜色,并算出文字与底色的 WCAG 对比度,说明有没有达到 AA 或 AAA。全部在浏览器本地完成。
日期计算
转换计算算两个日期之间相差多少天,或给一个日期加减若干天、周、月。日期用日历挑或直接粘贴,结束日期留空就与今天比较。全部在浏览器本地完成。
Cron 解析
转换计算把 cron 表达式逐字段讲成人话,并算出接下来几次的执行时间;永远不会触发的表达式会当场说明原因。全部在浏览器本地解析。
单位换算
转换计算在长度、重量、温度、体积这类单位之间换算,输入一个值就能看到同类全部单位下的结果。全部在浏览器本地完成,不上传。