外观
二八十六进制快速转换
约 735 字大约 2 分钟
2025-12-26
为什么需要快速转换
在实际工程中, 我们很少真的在十进制↔二进制之间来回计算.
更常见的情况是:
- 查看内存/寄存器/二进制数据.
- 调试程序/分析协议/阅读日志.
- 在二进制/八进制/十六进制之间切换表示.
如果每次都使用位权展开或除基取余, 效率极低.
好消息是: 二进制/八进制/十六进制之间存在天然的位对齐关系.
这使得它们之间可以进行无需计算的快速转换.
二进制与八进制的关系
位数映射关系
- 八进制的基数是8=23
- 因此: 1 位八进制 = 3 位二进制
这意味着, 八进制中的每一位, 都可以被精确拆分为 3 位二进制.
二进制 → 八进制
转换规则:
- 从右向左, 每3 位二进制分为一组.
- 不足 3 位时, 在高位补 0.
- 每一组单独转换为八进制.
示例:
1010102
分组:
101010
对应八进制:
10120102=58=28
最终结果:
528
八进制 → 二进制
规则正好相反:
- 每一位八进制, 直接替换为 3 位二进制.
示例:
528
展开为:
52→101→010
结果:
1010102
二进制与十六进制的关系
位数映射关系
- 十六进制的基数是16=24
- 因此: 1 位十六进制 = 4 位二进制
这也是十六进制在计算机系统中被大量使用的根本原因.
二进制 → 十六进制
转换规则:
- 从右向左, 每 4 位二进制 分为一组.
- 不足 4 位时, 在高位补 0.
- 每一组直接转换为十六进制.
示例:
1010102
分组:
00101010
转换:
0010210102=216=A16
结果:
2A16
十六进制 → 二进制
规则同样简单:
- 每一位十六进制, 直接替换为 4 位二进制.
示例:
2A16
展开为:
2A→0010→1010
结果:
1010102
为什么这种转换一定正确
这种分组替换的方法, 并不是技巧, 而是数学必然.
原因在于:
- 八进制和十六进制的基数, 本身就是 2 的整数次幂.
- 位权可以被整齐地拆分或合并.
例如:
2628=82=162
位权不发生冲突, 数值自然保持不变.
工程实践中的常见形式
在实际代码和文档中, 通常使用以下表示方式:
- 二进制:
0b101010 - 八进制:
0o52 - 十六进制:
0x2A
十六进制最常见, 因为它:
- 长度短.
- 可读性强.
- 与字节/内存边界天然对齐.
版权所有
版权归属:洱海