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. 数字分隔符 _ 可提高大数字可读性

相关推荐
灿飞屋14 小时前
Kotlin与Java虚拟机三:控制流
android·java·开发语言·后端·python·kotlin·安卓
benchmark_cc14 小时前
单只股票五档盘口接入个人研究仓库:QuantDash 读取、校验与易错点
python·数据分析·pandas·量化交易·股票数据·quantdash
青少儿编程课堂16 小时前
蓝桥杯·全国青少年信息素养大赛·电子学会Python/C++考级:中缀表达式求值解析
c++·python·算法·bfs·信息学竞赛
灿飞屋18 小时前
Kotlin与Java虚拟机四:函数
java·python·kotlin·安卓·android jetpack
一晌小贪欢19 小时前
Python基础:第 09 篇 · while 循环:重复直到不满足
开发语言·c++·python·数据可视化·面向对象·python办公
一条大祥脚20 小时前
CuTe 与 CuTe DSL:从 C++ 模板元编程到 Python DSL 的 GPU 编程演进
开发语言·c++·python·cutlass·cute·cute dsl
10年前端老司机21 小时前
Milvus 8种检索能力实践
数据库·python·agent
Sakura_j_h_21 小时前
从零写一个 MCP stdio Server:用 Python 校验博客文章格式
开发语言·python·自动化·ai工具·mcp·json-rpc
大草原的小灰灰21 小时前
LLM应用的标准开发框架LangChain(八)- 中间件
python·中间件·langchain
卷无止境1 天前
百万 token 时代的真相:主流大模型上下文窗口与最大输出的横向对比分析
人工智能·python