在线工具箱
进制转换

进制转换工具

二 / 八 / 十 / 十六进制四进制实时联动,支持 2~36 任意进制、大数与补码视图。

隐私安全:所有处理均在您的浏览器本地完成,数据绝不上传
进制转换开发补码

常用进制互转

任意一框输入,其余实时联动
输出格式选项

常见参考值

点击任意参考值可一键填入上方的输入框

进阶功能

工作原理

  1. 1输入被解析为「符号 + 整数部分 + 小数部分」的精确表示:整数部分用 BigInt 逐位累加(值 = 值 × 进制 + 当前位),小数部分同时记录分子与分母(分母为 进制^小数位数)。
  2. 2解析前会自动剔除空格、下划线与千位逗号,并识别 0x / 0b / 0o 前缀;若前缀声明的进制与所选进制不一致,或出现超出该进制的字符,立即内联报错并标红该输入框。
  3. 3输出目标进制时,整数部分调用 BigInt 的原生进制转换,小数部分通过反复「乘目标进制、取整数位、留余数」逐步求位,因此结果精确、不引入浮点误差。
  4. 4补码视图先按位宽取模(v mod 2^width),再以最高位判断有符号解释;例如 -1 在 64 位下为 64 个 1,无符号解释为 18446744073709551615、有符号解释为 -1。
  5. 5格式选项(大写、分组、前缀)只影响展示层,不改变内部数值;完成的转换不会离开浏览器,断网状态下功能完整可用。

常见问题

转换成大数会不会丢精度?

不会。整数部分全程使用 JavaScript 原生 BigInt 运算,可以精确表示任意长度整数,超过 2^53(9007199254740992)甚至 2^64 也不会像 Number 那样出现末位偏差。例如 2^64 = 18446744073709551616 转十六进制精确得到 10000000000000000。

支持小数转换吗?会不会有误差?

支持。小数部分不使用浮点数,而是把它表示为精确的分数(分子 / 分母),输出时按目标进制逐位求商,因此只要在该进制下是有限小数就能完全精确;若是无限循环小数(如十进制 0.1 转二进制),会按设定的最多 24 位截断并给出提示。

可以直接粘贴带 0x、0b、0o 前缀或带分隔符的内容吗?

可以。工具会自动识别 0x(十六进制)、0b(二进制)、0o(八进制)前缀,也会忽略空格、下划线与千位逗号,例如 0x48656c6c6f、1111_1111、1_000_000 都能正确解析。若前缀指示的进制与当前输入框的进制不一致,会给出明确提示而不做猜测。

补码视图和 C 语言里的整数是什么关系?

完全一致。在 8 / 16 / 32 / 64 位下,工具先按 2^width 取模得到无符号值,再用最高位判断有符号(补码)解释。例如输入 -1 选择 32 位,二进制为 32 个 1、十六进制 0xffffffff、有符号解释为 -1、无符号解释为 4294967295,与 int32_t / uint32_t 的表现相同。

「自定义符号表」有什么用?

有些场景使用的数字符号不是标准的 0-9 与 a-z,例如用 A~P 表示 0~15,或用特殊字符作「数字」。自定义符号表中符号的排列顺序即位权顺序(第 1 个符号代表 0),工具会按码位拆分并自动去重,符号个数即进制基数(2~64 个)。

数据会被上传吗?

不会。所有解析与转换都是浏览器本地的纯计算,不发起任何网络请求,断网也能完整使用,输入的数值也不会保存在任何服务器上。

更多在线工具