python 中的进制

进制是数值的表示方式,Python 原生支持二进制、八进制、十进制、十六进制,并提供了丰富的进制转换功能。

一、进制表示方式

1. 四种进制的字面量

复制代码
# 十进制(默认)
dec = 42
print(dec)        # 42

# 二进制:0b 或 0B 前缀
bin_num = 0b101010
print(bin_num)    # 42

# 八进制:0o 或 0O 前缀
oct_num = 0o52
print(oct_num)    # 42

# 十六进制:0x 或 0X 前缀
hex_num = 0x2A
print(hex_num)    # 42

2. 数字分隔符(Python 3.6+)

复制代码
# 使用下划线提高可读性
bin_num = 0b1010_1010_1111_0000
oct_num = 0o7_6_5_4
dec_num = 1_000_000_000
hex_num = 0xFF_00_FF_00

print(bin_num)    # 43632
print(dec_num)    # 1000000000

二、进制转换函数

1. 其他进制 → 十进制

复制代码
# 使用 int() 函数
print(int('101010', 2))      # 42(二进制 → 十进制)
print(int('52', 8))          # 42(八进制 → 十进制)
print(int('2A', 16))         # 42(十六进制 → 十进制)
print(int('FF', 16))         # 255

# 数字字符串默认按十进制处理
print(int('42'))             # 42(十进制)

2. 十进制 → 其他进制

复制代码
num = 42

# 二进制
print(bin(num))              # 0b101010
print(format(num, 'b'))      # 101010(无前缀)
print(f"{num:b}")            # 101010(f-string)

# 八进制
print(oct(num))              # 0o52
print(format(num, 'o'))      # 52
print(f"{num:o}")            # 52

# 十六进制
print(hex(num))              # 0x2a
print(format(num, 'x'))      # 2a(小写)
print(format(num, 'X'))      # 2A(大写)
print(f"{num:x}")            # 2a

三、进制格式化输出

1. 使用 format() 函数

复制代码
num = 255

# 二进制
print(format(num, 'b'))        # 11111111
print(format(num, '08b'))      # 11111111(宽度8,补零)
print(format(num, '#b'))       # 0b11111111(带前缀)

# 八进制
print(format(num, 'o'))        # 377
print(format(num, '#o'))       # 0o377

# 十六进制
print(format(num, 'x'))        # ff(小写)
print(format(num, 'X'))        # FF(大写)
print(format(num, '#x'))       # 0xff
print(format(num, '04x'))      # 00ff(宽度4,补零)

2. 使用 f-string(推荐)

复制代码
num = 255

print(f"{num:b}")      # 11111111
print(f"{num:#b}")     # 0b11111111
print(f"{num:08b}")    # 11111111(补零到8位)
print(f"{num:o}")      # 377
print(f"{num:x}")      # ff
print(f"{num:X}")      # FF
print(f"{num:#x}")     # 0xff

# 动态宽度
width = 8
print(f"{num:0{width}b}")  # 11111111

3. 格式化选项对比

格式 二进制 八进制 十六进制
无前缀 {:b} {:o} {:x}
小写前缀 {:#b} {:#o} {:#x}
大写 {:B} {:O} {:X}
大写前缀 {:#B} {:#O} {:#X}
补零 {:08b} {:04o} {:04x}

最后来一个汇总表把:

进制 前缀 转换函数 格式化
二进制 0b/0B bin() {:b}
八进制 0o/0O oct() {:o}
十进制 int() {:d}
十六进制 0x/0X hex() {:x}/{:X}

备注

  1. Python 原生支持四种进制字面量

  2. int() 函数可将各进制字符串转为十进制

  3. bin()oct()hex() 将十进制转为对应进制(带前缀)

  4. format() 和 f-string 可控制进制格式(可带/不带前缀)

  5. 位运算天然支持二进制操作

  6. 数字分隔符 _ 可提高大数字可读性

相关推荐
knight_9___1 小时前
大模型project面试3
人工智能·python·语言模型·面试·大模型·agent
m0_591364731 小时前
如何编写带默认值的SQL存储过程_简化前端调用接口设计
jvm·数据库·python
iAm_Ike1 小时前
如何处理SQL存储过程存储过程循环陷阱_优化逻辑结构
jvm·数据库·python
俊哥工具1 小时前
鼠标自动连点怎么设置?详细教学,简单易懂!
python·django·pdf·计算机外设·virtualenv·pygame
Jetev1 小时前
MySQL实现跨库在线迁移的方法_利用Binlog实时数据同步工具
jvm·数据库·python
2401_850491651 小时前
c++ circle元编程如何使用
jvm·数据库·python
WL_Aurora1 小时前
Python爬虫实战(二):百度热搜榜单爬取
爬虫·python
TechWayfarer1 小时前
网络安全视角:利用IP定位API接口识别机房与基站流量(合规风控篇)
开发语言·网络·数据库·python·安全·网络安全
码界筑梦坊1 小时前
118-基于Python的游戏账号数据可视化分析系统
python·游戏·信息可视化·毕业设计·pandas·fastapi