进制转换器
支持二进制、八进制、十进制、十六进制任意转换,位运算计算,ASCII字符与数值互转
二进制对照
常用ASCII字符表
什么是进制转换工具?
进制转换工具是一款支持二进制(Binary)、八进制(Octal)、十进制(Decimal)和十六进制(Hexadecimal)之间相互转换的在线计算器。在计算机科学中,不同进制的使用场景各有不同:二进制是计算机底层运算的基础,每一位代表一个比特(bit);八进制在早期 Unix 系统中广泛用于表示文件权限(如 755、644);十进制是人类日常使用的数制;十六进制则在内存地址、颜色值(如 #FF5733)、MAC 地址等场景中频繁出现。理解进制之间的转换关系是计算机科学的必备基础技能。本工具支持整数和小数的进制转换,实时显示所有四种进制的结果,同时支持大数转换和位宽设置。
如何使用进制转换工具
- 步骤一:输入数值并选择进制 — 在任意一个进制输入框中输入数值(如十进制的 255),工具会自动识别并实时计算其他进制的对应值。
- 步骤二:设置位宽(可选) — 对于整数转换,可以设置目标位宽(8位、16位、32位、64位),工具会按照补码规则处理负数,并显示溢出警告。
- 步骤三:查看转换结果 — 四个进制输入框同时显示转换结果,包括二进制(带位分隔显示)、八进制、十进制和十六进制,方便对照学习。
常见使用场景
场景一:颜色值转换
Web 开发中经常需要在十六进制颜色值(#FF5733)和 RGB 十进制值(255, 87, 51)之间转换。使用进制工具可以快速完成这种转换,帮助设计师和开发者在 CSS 中精确指定颜色。
场景二:网络子网掩码计算
网络工程师在计算 IP 子网时,需要在二进制的子网掩码和十进制/点分十进制表示之间转换。例如 /24 子网掩码的二进制为 11111111.11111111.11111111.00000000,对应十进制 255.255.255.0。
场景三:调试底层程序
在进行嵌入式开发或底层调试时,需要查看内存地址(十六进制)、寄存器值(二进制/十六进制)和计算偏移量(十进制)。进制转换工具帮助开发者在不同表示法之间快速切换,提高调试效率。
技术原理
进制转换的数学基础是"按权展开"和"除基取余"。十进制转其他进制使用"除基取余法":将十进制数不断除以目标进制基数,记录余数,最后将余数倒序排列。其他进制转十进制使用"按权展开法":将每位数字乘以其对应的位权(基数的幂次),然后求和。JavaScript 内置了进制转换方法:parseInt(string, radix) 将任意进制字符串转为十进制整数,Number.toString(radix) 将十进制数转为任意进制字符串。
// 进制转换核心实现
function convertBase(num, fromBase, toBase) {
const decimal = parseInt(num, fromBase);
return decimal.toString(toBase).toUpperCase();
}
// 示例
convertBase("FF", 16, 10); // "255"
convertBase("255", 10, 2); // "11111111"
convertBase("755", 8, 16); // "1ED"
最佳实践与注意事项
- 注意 JavaScript 的安全整数范围(±2^53 - 1),超出此范围的大整数转换可能丢失精度,大数场景建议使用 BigInt。
- 负数在计算机中以补码形式存储,转换时需明确是有符号数还是无符号数,以及位宽是 8/16/32/64 位。
- 十六进制输出通常使用大写字母(A-F),但在某些编程语言中习惯使用小写,根据需求选择。
- 浮点数的进制转换可能存在精度问题,特别是小数部分在二进制中可能无法精确表示。
常见问题
Q:为什么 0.1 在二进制中无法精确表示?
A:十进制的 0.1 在二进制中是无限循环小数(0.0001100110011...),类似于十进制中 1/3 = 0.333... 无法精确表示。这就是浮点数精度问题的根源,也是 0.1 + 0.2 在 JavaScript 中不等于 0.3 的原因。
Q:如何转换负数?
A:负数使用补码表示。以 8 位为例,-1 的补码是 11111111(即 255 的无符号表示)。转换时需先确定位宽,然后计算补码。本工具支持选择有符号/无符号模式和位宽设置。
Q:八进制在现代编程中还有哪些用途?
A:八进制主要用于 Unix/Linux 文件权限表示(如 chmod 755),JavaScript 中以 0 开头的数字字面量表示八进制(ES6 使用 0o 前缀)。此外在数据编码中,八进制的转义序列(如 、ÿ)仍然广泛使用。
Q:十六进制的颜色值是怎么计算的?
A>CSS 十六进制颜色值 #RRGGBB 中,RR、GG、BB 分别代表红、绿、蓝三色的强度值,范围从 00 到 FF(即十进制 0-255)。例如 #FF5733 表示红色 255、绿色 87、蓝色 51。缩写形式 #F53 等同于 #FF5533。
Q:转换结果有位数限制吗?
A>JavaScript 的安全整数范围是 ±9007199254740991(2^53 - 1)。超出此范围的大整数转换,建议使用 BigInt 模式。本工具支持 BigInt 输入,可以处理任意大小的整数转换。