在十进制、十六进制、二进制、八进制之间实时互转
进制转换(Number Base Conversion)是将一个数值从一种进制表示法转换为另一种进制表示法的过程。进制是计数系统的进位规则,不同进制使用不同数量的数字符号来表示数值。在日常生活中我们习惯使用十进制(0-9),但计算机底层使用二进制(0-1),编程中经常用到十六进制(0-9, A-F)和八进制(0-7)。进制转换工具帮助开发者在这些表示法之间快速切换,无需手动计算。
二进制是最基础的计算机语言,只使用 0 和 1 两个数字符号。计算机的 CPU、内存、寄存器等所有底层硬件都基于二进制工作。每个二进制位(bit)代表一个开关状态——开(1)或关(0)。在编程中,位运算(与、或、非、异或、移位)直接操作二进制位,是高性能计算和嵌入式开发的基础。例如,十进制数字 42 的二进制表示为 101010。
八进制使用 0 到 7 共 8 个数字符号。在早期计算机系统中,八进制曾被广泛用于表示二进制数据,因为每 3 个二进制位恰好对应 1 个八进制位。如今八进制主要用于 Unix/Linux 文件权限(如 chmod 755)、某些编程语言中的数字字面量(如 JavaScript 的 0o10 等于十进制的 8),以及一些嵌入式系统的寄存器配置。
十进制是人类最熟悉的计数系统,使用 0 到 9 十个数字符号。它是我们的"母语"进制,所有的日常计算、货币、度量都使用十进制。在编程中,十进制是默认的数字表示方式,我们输入和阅读数字的首选进制。当我们需要查看或输入其他进制的数值时,往往需要先将其转换为十进制来理解其"真正的值"。
十六进制使用 0-9 和 A-F(或 a-f)共 16 个符号。它是编程中最常用的非十进制表示法。每 4 个二进制位恰好对应 1 个十六进制位,这使得十六进制成为表示二进制数据的紧凑方式。典型应用场景包括:颜色代码(如 #FF5733 表示 RGB 颜色)、内存地址(如 0x7FFF)、Unicode 码点(如 U+4E2D)、MAC 地址(如 00:1A:2B:3C:4D:5E)、以及各种数据编码和调试场景。
| 十进制 | 二进制 | 八进制 | 十六进制 |
|---|---|---|---|
| 0 | 0 | 0 | 0 |
| 1 | 1 | 1 | 1 |
| 8 | 1000 | 10 | 8 |
| 10 | 1010 | 12 | A |
| 15 | 1111 | 17 | F |
| 16 | 10000 | 20 | 10 |
| 42 | 101010 | 52 | 2A |
| 100 | 1100100 | 144 | 64 |
| 255 | 11111111 | 377 | FF |
| 1024 | 10000000000 | 2000 | 400 |
不同编程语言对二进制、八进制和十六进制有着各自的前缀(prefix)、后缀(suffix)以及内置函数。下面整理主流编程语言中的进制表示语法,方便开发和查阅。
JavaScript (ES6+) 使用 0b 前缀表示二进制、0o 前缀表示八进制、0x 前缀表示十六进制。字符串与数字之间的进制转换可通过 parseInt() 和 toString() 方法完成。
| 进制 | 字面量示例 | 字符串→数字 | 数字→字符串 |
|---|---|---|---|
| 二进制 | 0b1010 → 10 | parseInt('1010', 2) | (10).toString(2) → '1010' |
| 八进制 | 0o755 → 493 | parseInt('755', 8) | (493).toString(8) → '755' |
| 十六进制 | 0xFF → 255 | parseInt('FF', 16) | (255).toString(16) → 'ff' |
Python 使用 0b 前缀表示二进制、0o 前缀表示八进制、0x 前缀表示十六进制。内置函数 bin()、oct()、hex() 将整数转为对应进制字符串,int() 可指定基数解析字符串。
| 进制 | 字面量示例 | 字符串→数字 | 数字→字符串 |
|---|---|---|---|
| 二进制 | 0b1010 → 10 | int('1010', 2) | bin(10) → '0b1010' |
| 八进制 | 0o755 → 493 | int('755', 8) | oct(493) → '0o755' |
| 十六进制 | 0xFF → 255 | int('FF', 16) | hex(255) → '0xff' |
Java 中二进制字面量使用 0b 前缀(Java 7+),八进制使用前导 0,十六进制使用 0x 前缀。可通过 Integer.parseInt() 解析字符串,Integer.toBinaryString() / toOctalString() / toHexString() 格式化输出。
| 进制 | 字面量示例 | 字符串→数字 | 数字→字符串 |
|---|---|---|---|
| 二进制 | 0b1010 → 10 | Integer.parseInt("1010", 2) | Integer.toBinaryString(10) |
| 八进制 | 0755 → 493 | Integer.parseInt("755", 8) | Integer.toOctalString(493) |
| 十六进制 | 0xFF → 255 | Integer.parseInt("FF", 16) | Integer.toHexString(255) |
C 和 C++ 中,二进制字面量使用 0b 前缀(C++14 / GCC 扩展),八进制使用前导 0(如 0755),十六进制使用 0x 前缀。printf / std::cout 输出进制时常用 %x、%o 格式化标识符或 std::hex、std::oct 流操纵符。
| 进制 | 字面量示例 | printf 格式化 | C++ 流操纵符 |
|---|---|---|---|
| 二进制 | 0b1010 → 10 | 无标准格式符 | std::bitset |
| 八进制 | 0755 → 493 | printf("%o", 493) | std::cout << std::oct << 493 |
| 十六进制 | 0xFF → 255 | printf("%x", 255) | std::cout << std::hex << 255 |
Go 语言使用 0b 前缀表示二进制(Go 1.13+),0o 前缀表示八进制(Go 1.13+),0x 前缀表示十六进制。也可通过 strconv.ParseInt() 解析和 strconv.FormatInt() 格式化输出。
| 进制 | 字面量示例 | 字符串→数字 | 数字→字符串 |
|---|---|---|---|
| 二进制 | 0b1010 → 10 | strconv.ParseInt("1010", 2, 64) | strconv.FormatInt(10, 2) |
| 八进制 | 0o755 → 493 | strconv.ParseInt("755", 8, 64) | strconv.FormatInt(493, 8) |
| 十六进制 | 0xFF → 255 | strconv.ParseInt("FF", 16, 64) | strconv.FormatInt(255, 16) |
Rust 使用 0b 前缀表示二进制、0o 前缀表示八进制、0x 前缀表示十六进制。可通过 from_str_radix() 从字符串解析,使用 format! 宏配合格式化说明符({:b}、{:o}、{:x})进行输出。
| 进制 | 字面量示例 | 字符串→数字 | 格式化输出 |
|---|---|---|---|
| 二进制 | 0b1010 → 10 | i32::from_str_radix("1010", 2) | format!("{:b}", 10) |
| 八进制 | 0o755 → 493 | i32::from_str_radix("755", 8) | format!("{:o}", 493) |
| 十六进制 | 0xFF → 255 | i32::from_str_radix("FF", 16) | format!("{:x}", 255) |
#3B82F6),当需要在 JavaScript 中动态计算颜色时,需要在十六进制和十进制 RGB 之间转换。755 或 rwxr-xr-x)本质上是 3 位二进制数的八进制表示。虽然手动计算进制转换是计算机科学的基本功,但在实际开发中,频繁的手工转换不仅低效而且容易出错。尤其是处理大数值(如 64 位整数)或负数的进制转换时,手动计算很容易出现遗漏和错误。我们的在线进制转换工具支持四种常用进制实时互转,输入任意进制的数值,立即获得其他三种进制的对应结果。所有计算在浏览器本地通过 BigInt 完成,支持超大整数和负数,无需安装任何软件,数据完全不会上传到服务器。无论你是在调试代码、编写文档、还是学习计算机基础知识,这都是你身边最便捷的进制转换助手。