徐州市网站建设_网站建设公司_字体设计_seo优化
2025/12/28 10:34:30 网站建设 项目流程

想要掌握 Python 中十进制整数十六进制之间的相互转换方法,我会从基础转换、格式控制、实用场景三个维度,用简单易懂的示例帮你彻底搞懂这个知识点。

一、核心转换方法

1. 十进制整数 → 十六进制

Python 提供两种核心方式:hex()内置函数(快速转换)、格式化字符串(灵活控制格式)。

方法 1:hex()函数(最基础)

hex()会返回以0x为前缀的十六进制字符串(小写),语法:hex(十进制整数)

python

运行

# 示例1:正整数转换 num = 255 hex_str = hex(num) print(f"十进制 {num} → 十六进制:{hex_str}") # 输出:十进制 255 → 十六进制:0xff # 示例2:负整数转换 num = -100 hex_str = hex(num) print(f"十进制 {num} → 十六进制:{hex_str}") # 输出:十进制 -100 → 十六进制:-0x64
方法 2:格式化字符串(灵活控制格式)

通过format()或 f-string 可以自定义十六进制格式(是否带前缀、大小写),更实用。

python

num = 1234 # 格式1:带0x前缀(小写) hex1 = f"{num:#x}" print(hex1) # 输出:0x4d2 # 格式2:不带前缀(小写) hex2 = f"{num:x}" print(hex2) # 输出:4d2 # 格式3:带0x前缀(大写) hex3 = f"{num:#X}" print(hex3) # 输出:0X4D2 # 格式4:不带前缀(大写) hex4 = f"{num:X}" print(hex4) # 输出:4D2 # 格式5:固定位数(不足补0,比如补到8位) hex5 = f"{num:08x}" print(hex5) # 输出:000004d2

2. 十六进制 → 十进制整数

核心用int()函数,第二个参数指定进制为 16,语法:int(十六进制字符串, 16)注意:十六进制字符串可以带0x/0X前缀,也可以不带,int()都能识别。

python

# 示例1:带0x前缀的十六进制字符串转换 hex_str1 = "0xff" num1 = int(hex_str1, 16) print(f"十六进制 {hex_str1} → 十进制:{num1}") # 输出:十六进制 0xff → 十进制:255 # 示例2:不带前缀的十六进制字符串转换 hex_str2 = "4d2" num2 = int(hex_str2, 16) print(f"十六进制 {hex_str2} → 十进制:{num2}") # 输出:十六进制 4d2 → 十进制:1234 # 示例3:大写十六进制字符串转换(不影响) hex_str3 = "0X4D2" num3 = int(hex_str3, 16) print(f"十六进制 {hex_str3} → 十进制:{num3}") # 输出:十六进制 0X4D2 → 十进制:1234 # 示例4:处理负数(先转正数再加负号) hex_str4 = "-0x64" num4 = -int(hex_str4.strip("-"), 16) print(f"十六进制 {hex_str4} → 十进制:{num4}") # 输出:十六进制 -0x64 → 十进制:-100

二、实用场景示例

场景 1:批量转换(列表中的整数 / 十六进制)

python

# 批量将十进制列表转十六进制(不带前缀,大写) dec_list = [10, 20, 30, 40] hex_list = [f"{x:X}" for x in dec_list] print("十进制列表转十六进制:", hex_list) # 输出:['A', '14', '1E', '28'] # 批量将十六进制列表转十进制 hex_list2 = ["0xa", "14", "1e", "28"] dec_list2 = [int(x, 16) for x in hex_list2] print("十六进制列表转十进制:", dec_list2) # 输出:[10, 20, 30, 40]

场景 2:去掉十六进制字符串的前缀

python

hex_str = "0x4d2" # 方法1:切片(去掉前2个字符) hex_no_prefix = hex_str[2:] print(hex_no_prefix) # 输出:4d2 # 方法2:用lstrip()(更通用,兼容0X前缀) hex_no_prefix2 = hex_str.lstrip("0x").lstrip("0X") print(hex_no_prefix2) # 输出:4d2

场景 3:十六进制与字节串(bytes)互转(拓展)

python

# 十进制整数 → 十六进制字节串(比如255 → b'\xff') num = 255 byte_data = num.to_bytes(1, byteorder='big') # 1表示1个字节,big表示大端 print(byte_data) # 输出:b'\xff' # 十六进制字节串 → 十进制整数 byte_data2 = b'\x4d\x02' num2 = int.from_bytes(byte_data2, byteorder='big') print(num2) # 输出:19714(对应十六进制0x4d02)

总结

  1. 整数转十六进制hex()快速转换(带 0x 小写前缀),格式化字符串(f"{num:x/X}")可灵活控制前缀、大小写、位数;
  2. 十六进制转整数:核心用int(hex_str, 16),兼容带 / 不带 0x 前缀、大小写字符串;
  3. 实用技巧:批量转换用列表推导式,固定位数用08x这类格式,处理负数需先转正数再加负号。

这些方法覆盖了日常开发中绝大多数整数与十六进制转换的场景,新手只需记住hex()int(...,16)和格式化字符串这三个核心工具即可。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询