杰瑞科技汇

Python 16进制字符串如何转16进制数?

在 Python 中,将一个表示十六进制数的字符串转换为实际的十六进制数(整数或字节),可以使用以下几种方法:

Python 16进制字符串如何转16进制数?-图1
(图片来源网络,侵删)

方法 1:使用 int() 函数(转换为整数)

如果字符串表示的是十六进制数字(如 "1A"),可以用 int() 转换为十进制整数:

hex_str = "1A"
hex_num = int(hex_str, 16)  # 第二个参数 16 表示十六进制
print(hex_num)  # 输出: 26

特点

  • 返回的是整数(Python 中 int 类型)。
  • 适用于纯数字的十六进制字符串(如 "FF", "deadbeef")。

方法 2:使用 bytes.fromhex()(转换为字节对象)

如果字符串是十六进制编码的字节(如 "48656c6c6f" 对应 "Hello"),可以用 bytes.fromhex()

hex_str = "48656c6c6f"
byte_data = bytes.fromhex(hex_str)
print(byte_data)  # 输出: b'Hello'

特点

  • 返回的是 bytes 对象。
  • 自动处理空格和大小写(如 "48 65" 会被正确解析)。
  • 适用于十六进制编码的二进制数据。

方法 3:手动转换为字节(灵活控制)

如果需要更灵活地处理(例如逐字节转换),可以手动解析:

hex_str = "1A2B3C"
byte_data = bytes.fromhex(hex_str)  # 方法同上
# 或者手动解析
byte_data_manual = bytes([int(hex_str[i:i+2], 16) for i in range(0, len(hex_str), 2)])
print(byte_data_manual)  # 输出: b'\x1a:<' (对应 0x1A, 0x2B, 0x3C)

方法 4:处理带前缀的字符串(如 "0x1A"

如果字符串包含 "0x" 前缀,需先去除:

Python 16进制字符串如何转16进制数?-图2
(图片来源网络,侵删)
hex_str = "0x1A"
hex_num = int(hex_str, 16) if hex_str.startswith("0x") else int(hex_str, 16)
print(hex_num)  # 输出: 26

需求 方法 示例
转换为整数 int(hex_str, 16) int("1A", 16) → 26
转换为字节 bytes.fromhex(hex_str) bytes.fromhex("48656c6c6f") → b'Hello'
手动解析字节 bytes([int(...)]) bytes([int("1A", 16)]) → b'\x1a'
处理 0x 前缀 先去除前缀 int("0x1A".replace("0x", ""), 16)

选择合适的方法取决于你的具体需求!

Python 16进制字符串如何转16进制数?-图3
(图片来源网络,侵删)
分享:
扫描分享到社交APP
上一篇
下一篇