🔢 进制转换

在十进制、十六进制、二进制、八进制之间实时互转

BinaryBase 2
0
OctalBase 8
0
DecimalBase 10
0
HexadecimalBase 16
0
💡 快速参考

什么是进制转换?

进制转换(Number Base Conversion)是将一个数值从一种进制表示法转换为另一种进制表示法的过程。进制是计数系统的进位规则,不同进制使用不同数量的数字符号来表示数值。在日常生活中我们习惯使用十进制(0-9),但计算机底层使用二进制(0-1),编程中经常用到十六进制(0-9, A-F)和八进制(0-7)。进制转换工具帮助开发者在这些表示法之间快速切换,无需手动计算。

四种常用进制详解

二进制(Binary, Base 2)

二进制是最基础的计算机语言,只使用 01 两个数字符号。计算机的 CPU、内存、寄存器等所有底层硬件都基于二进制工作。每个二进制位(bit)代表一个开关状态——开(1)或关(0)。在编程中,位运算(与、或、非、异或、移位)直接操作二进制位,是高性能计算和嵌入式开发的基础。例如,十进制数字 42 的二进制表示为 101010

八进制(Octal, Base 8)

八进制使用 07 共 8 个数字符号。在早期计算机系统中,八进制曾被广泛用于表示二进制数据,因为每 3 个二进制位恰好对应 1 个八进制位。如今八进制主要用于 Unix/Linux 文件权限(如 chmod 755)、某些编程语言中的数字字面量(如 JavaScript 的 0o10 等于十进制的 8),以及一些嵌入式系统的寄存器配置。

十进制(Decimal, Base 10)

十进制是人类最熟悉的计数系统,使用 09 十个数字符号。它是我们的"母语"进制,所有的日常计算、货币、度量都使用十进制。在编程中,十进制是默认的数字表示方式,我们输入和阅读数字的首选进制。当我们需要查看或输入其他进制的数值时,往往需要先将其转换为十进制来理解其"真正的值"。

十六进制(Hexadecimal, Base 16)

十六进制使用 0-9A-F(或 a-f)共 16 个符号。它是编程中最常用的非十进制表示法。每 4 个二进制位恰好对应 1 个十六进制位,这使得十六进制成为表示二进制数据的紧凑方式。典型应用场景包括:颜色代码(如 #FF5733 表示 RGB 颜色)、内存地址(如 0x7FFF)、Unicode 码点(如 U+4E2D)、MAC 地址(如 00:1A:2B:3C:4D:5E)、以及各种数据编码和调试场景。

进制对照表

十进制二进制八进制十六进制
0000
1111
81000108
10101012A
15111117F
16100002010
42101010522A
100110010014464
25511111111377FF
1024100000000002000400

各编程语言中的进制表示方法

不同编程语言对二进制、八进制和十六进制有着各自的前缀(prefix)、后缀(suffix)以及内置函数。下面整理主流编程语言中的进制表示语法,方便开发和查阅。

JavaScript / TypeScript

JavaScript (ES6+) 使用 0b 前缀表示二进制、0o 前缀表示八进制、0x 前缀表示十六进制。字符串与数字之间的进制转换可通过 parseInt()toString() 方法完成。

进制字面量示例字符串→数字数字→字符串
二进制0b1010 → 10parseInt('1010', 2)(10).toString(2)'1010'
八进制0o755 → 493parseInt('755', 8)(493).toString(8)'755'
十六进制0xFF → 255parseInt('FF', 16)(255).toString(16)'ff'

Python

Python 使用 0b 前缀表示二进制、0o 前缀表示八进制、0x 前缀表示十六进制。内置函数 bin()oct()hex() 将整数转为对应进制字符串,int() 可指定基数解析字符串。

进制字面量示例字符串→数字数字→字符串
二进制0b1010 → 10int('1010', 2)bin(10)'0b1010'
八进制0o755 → 493int('755', 8)oct(493)'0o755'
十六进制0xFF → 255int('FF', 16)hex(255)'0xff'

Java

Java 中二进制字面量使用 0b 前缀(Java 7+),八进制使用前导 0,十六进制使用 0x 前缀。可通过 Integer.parseInt() 解析字符串,Integer.toBinaryString() / toOctalString() / toHexString() 格式化输出。

进制字面量示例字符串→数字数字→字符串
二进制0b1010 → 10Integer.parseInt("1010", 2)Integer.toBinaryString(10)
八进制0755 → 493Integer.parseInt("755", 8)Integer.toOctalString(493)
十六进制0xFF → 255Integer.parseInt("FF", 16)Integer.toHexString(255)

C / C++

C 和 C++ 中,二进制字面量使用 0b 前缀(C++14 / GCC 扩展),八进制使用前导 0(如 0755),十六进制使用 0x 前缀。printf / std::cout 输出进制时常用 %x%o 格式化标识符或 std::hexstd::oct 流操纵符。

进制字面量示例printf 格式化C++ 流操纵符
二进制0b1010 → 10无标准格式符std::bitset
八进制0755 → 493printf("%o", 493)std::cout << std::oct << 493
十六进制0xFF → 255printf("%x", 255)std::cout << std::hex << 255

Go

Go 语言使用 0b 前缀表示二进制(Go 1.13+),0o 前缀表示八进制(Go 1.13+),0x 前缀表示十六进制。也可通过 strconv.ParseInt() 解析和 strconv.FormatInt() 格式化输出。

进制字面量示例字符串→数字数字→字符串
二进制0b1010 → 10strconv.ParseInt("1010", 2, 64)strconv.FormatInt(10, 2)
八进制0o755 → 493strconv.ParseInt("755", 8, 64)strconv.FormatInt(493, 8)
十六进制0xFF → 255strconv.ParseInt("FF", 16, 64)strconv.FormatInt(255, 16)

Rust

Rust 使用 0b 前缀表示二进制、0o 前缀表示八进制、0x 前缀表示十六进制。可通过 from_str_radix() 从字符串解析,使用 format! 宏配合格式化说明符({:b}{:o}{:x})进行输出。

进制字面量示例字符串→数字格式化输出
二进制0b1010 → 10i32::from_str_radix("1010", 2)format!("{:b}", 10)
八进制0o755 → 493i32::from_str_radix("755", 8)format!("{:o}", 493)
十六进制0xFF → 255i32::from_str_radix("FF", 16)format!("{:x}", 255)

进制转换的实际应用场景

为什么选择在线进制转换工具?

虽然手动计算进制转换是计算机科学的基本功,但在实际开发中,频繁的手工转换不仅低效而且容易出错。尤其是处理大数值(如 64 位整数)或负数的进制转换时,手动计算很容易出现遗漏和错误。我们的在线进制转换工具支持四种常用进制实时互转,输入任意进制的数值,立即获得其他三种进制的对应结果。所有计算在浏览器本地通过 BigInt 完成,支持超大整数和负数,无需安装任何软件,数据完全不会上传到服务器。无论你是在调试代码、编写文档、还是学习计算机基础知识,这都是你身边最便捷的进制转换助手。