使用方法
十六进制计算器按下面的步骤即可算出结果,所有数值都在本页浏览器内换算,不上传任何内容。
第一步:在「数值 A」里填入第一个数,例如填 FF(这是十六进制的 255),并把「A 的进制」选成十六进制。第二步:在「数值 B」里填 10(十六进制的 16),「B 的进制」同样选十六进制。第三步:选运算符,例如「加 +」做 0xFF 加 0x10。第四步:移位位数填 4、方向选左移,可同时看到 A 左移 4 位的结果。点「开始计算」后,十六进制、十进制、二进制、八进制四种写法会一起出现;按输入框里按回车键也能直接算。
能解决什么
这个十六进制计算器主要帮你在写代码、看协议、调硬件时处理进制和位运算。第一,把一段十六进制立即换算成十进制、二进制、八进制,阅读内存地址或颜色值时很常用。第二,做十六进制加法、减法、乘法,比如把两个偏移量相加、把段地址乘以 16。第三,做按位与、或、异或,用来提取或清除某几个比特位,例如 0xFF AND 0x0F 只保留低 8 位。第四,做左移右移,快速实现乘二、除二或对齐到字节边界。
本页只处理整数进制换算与按位运算,不做浮点十六进制(IEEE 754 单精度、双精度)的位级解读,那种需求请用专门的浮点解析工具;本页也不解析带符号补码表示的负数字节流,需要时请自行分段处理。
原理和变量
十六进制计算器的核心只有几条,全部调用浏览器原生函数,没有任何外部库。
第一,读取数值用 parseInt(字符串, 进制),第二个参数就是 2、8、10、16,函数按对应基数把文本变成整数,例如 parseInt('FF',16) 得到 255。第二,输出四种进制用 Number.toString(基数),比如 (255).toString(16) 得到 "ff";十六进制字母统一转成大写方便阅读。第三,按位与或非异或和移位用 BigInt 实现而不是 JS 的位运算符,因为 JS 的 &、|、<< 会被先截断成 32 位有符号整数,超过 21 亿的数会算错,而 BigInt 是按需精度的整数,能覆盖到安全整数上限。第四,输入的文本会先去掉 0x、0b、0o 这类前缀再按进制校验,只允许该进制合法的字符出现。
第五,边界是:JS 安全整数上限为 9007199254740991(即 2 的 53 次方减一),超出这个范围整数会丢失低位精度,所以超过它就提示拆分;负数按带负号的写法展示,不做二进制补码展开。第六,常见误用是把十进制结果直接当十六进制抄、或忘记左移多位会溢出 32 位,本工具用 BigInt 和显式进制标注避免了这两点。
完整示例
下面用页面默认值演示,控件里的 A=FF、B=10、运算符为加、移位 n=4 左移,算出结果与上方输入框完全一致(数值仅作演示)。
加法:0xFF + 0x10 = 0x10F,十进制 255 + 16 = 271,二进制 100001111,八进制 417。乘法:0xFF × 0x10 = 0xFF0,即 255 × 16 = 4080。除法取商:0xFF ÷ 0x10 = 商 0xF、余数 0xF(255 ÷ 16 = 15 余 15)。按位与:0xFF AND 0x10 = 0x10(只有第 4 位重合)。左移:0xFF << 4 = 0xFF0,相当于 255 × 16 = 4080;右移 0xFF >> 4 = 0xF。
输入范围与对照表
四个进制可输入的范围是:十六进制 0-9 与 A-F(大小写均可)、十进制 0-9、八进制 0-7、二进制 0-1,带 0x、0o、0b 前缀也能识别。下面是 0 到 15 的进制对照表,前 12 行直接展开,点「加载更多」看剩余 4 行;表格可导出 CSV 或 JSON,也可复制成制表符文本。
| 十进制 | 十六进制 | 二进制 | 八进制 |
|---|---|---|---|
| 0 | 0 | 0 | 0 |
| 1 | 1 | 1 | 1 |
| 2 | 2 | 10 | 2 |
| 3 | 3 | 11 | 3 |
| 4 | 4 | 100 | 4 |
| 5 | 5 | 101 | 5 |
| 6 | 6 | 110 | 6 |
| 7 | 7 | 111 | 7 |
| 8 | 8 | 1000 | 10 |
| 9 | 9 | 1001 | 11 |
| 10 | A | 1010 | 12 |
| 11 | B | 1011 | 13 |
| 12 | C | 1100 | 14 |
| 13 | D | 1101 | 15 |
| 14 | E | 1110 | 16 |
| 15 | F | 1111 | 17 |
结果边界和舍入
十六进制计算器只做整数运算,这里把容易踩的边界讲清楚。安全整数上限是 9007199254740991,超过它的整数在 JS 里会丢掉低位,因此本工具在解析阶段就拦截超范围输入,要求拆分。负数按负号加绝对值展示,不做二进制补码展开——如果你要的是 8 位、16 位、32 位补码,请先确定位宽再手动取低若干位。
除法只给整数商和余数,不做四舍五入,因为对地址偏移和位掩码来说小数没有意义;需要小数请改用普通十进制计算器。移位位数限制在 0 到 63,因为 64 位以上在网页整数场景很少见,且超过 53 位后 BigInt 虽然能算但显示已无实用对照。十六进制字母统一大写,二进制去掉前导零只保留有效位,这些都属于展示归一,不改变数值本身。
常见问题
为什么我输入 G 会报错?
十六进制只有 0-9 和 A-F 共 16 个符号,G 不属于其中任何一个。工具会提示「进制为 16 时不能出现字符 G」,请改成合法字符,或在进制下拉里改成十进制。
左移和右移跟乘以 2 是一回事吗?
对非负整数,左移 n 位等价于乘以 2 的 n 次方,右移 n 位等价于除以 2 的 n 次方并舍去余数。但右移不四舍五入,且只适用于整数,这点和普通除法不同。
为什么不用 JS 的位运算符而用 BigInt?
JavaScript 的 &、|、^、<< 会先把操作数转成 32 位有符号整数,大于 2147483647 的数会被截断算错。本工具用 BigInt 做按位和移位,能正确覆盖到安全整数上限。
负数怎么显示成十六进制?
本工具在数值前加负号展示,例如 -255 显示为 -0xFF,不做补码。若你需要固定位宽的补码(如 8 位补码 0x01),请按目标位宽取低若干位后自己换算。
除法结果为什么有商和余数?
整数除法没有小数,本工具给出商和余数两项,例如 255 ÷ 16 商 15 余 15,和十进制除法一致。需要小数请用普通计算器。
能处理超过 9007199254740991 的大数吗?
不能。JS 安全整数上限就是 9007199254740991,超过会丢精度,本工具直接拦截并要求拆分计算,这是 IEEE 754 双精度的固有边界,不是本页限制。
二进制结果前面的 0 为什么被去掉了?
这是展示归一:二进制只保留有效位,比如 5 显示为 101 而不是 00000101。数值不变,若你需要固定位宽请自行补前导零。
结果可以复制或导出吗?
可以。「复制结果」复制四种进制文本;对照表支持导出 CSV(带 BOM,Excel 不乱码)、导出 JSON(不带 BOM)以及复制制表符文本贴到表格里。
相关工具
十六进制颜色表:查十六进制色值与常见配色。 RGB 转十六进制:把 RGB 写成十六进制颜色。 十六进制转 RGB:把十六进制色值拆成 RGB。 十六进制转 HSL:十六进制与 HSL 互看。 HSL 转十六进制:从 HSL 得到十六进制。 ASCII 表格生成器:字符与码点对照。 十六进制查看器:以十六进制看文件字节。