You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将字节的十六进制表示转换为Python字节值并写入二进制文件?

问题

给定以下十六进制字节序列(例如41对应字符'A'),需要将其转换为Python字节对象(如41转为b'\x41'),后续会将生成的字节写入二进制文件,示例代码如下:

f = open("binary", "wb")
f.write(s)
f.close()

同时也接受无需生成中间Python字节对象、直接转换写入文件的方案。

十六进制数据:

41 61 30 41 61 31 41 61
32 41 61 33 41 61 34 41
61 35 41 61 36 41 61 37
41 61 38 41 61 39 41 62
30 41 62 31 41 62 32 41
62 33 41 62 34 41 62 35
41 62 36 41 62 37 41 62
38 41 62 39 41 63 30 41
解决方案

方案1:转换为Python字节对象

使用Python内置的bytes.fromhex()方法可以直接将清理后的十六进制字符串转换为字节对象,这是最简洁高效的方式:

# 原始十六进制字符串
hex_data = """41 61 30 41 61 31 41 61
32 41 61 33 41 61 34 41
61 35 41 61 36 41 61 37
41 61 38 41 61 39 41 62
30 41 62 31 41 62 32 41
62 33 41 62 34 41 62 35
41 62 36 41 62 37 41 62
38 41 62 39 41 63 30 41"""

# 移除所有空格和换行符,得到连续的十六进制字符串
clean_hex = hex_data.replace(" ", "").replace("\n", "")

# 转换为字节对象
byte_obj = bytes.fromhex(clean_hex)

# 写入二进制文件(用with语句自动管理文件关闭,避免资源泄漏)
with open("binary", "wb") as f:
    f.write(byte_obj)

方案2:直接写入文件,无需中间字节对象

如果处理的十六进制数据量极大,不想占用内存存储完整的字节对象,可以分块转换并写入:

hex_data = """41 61 30 41 61 31 41 61
32 41 61 33 41 61 34 41
61 35 41 61 36 41 61 37
41 61 38 41 61 39 41 62
30 41 62 31 41 62 32 41
62 33 41 62 34 41 62 35
41 62 36 41 62 37 41 62
38 41 62 39 41 63 30 41"""

clean_hex = hex_data.replace(" ", "").replace("\n", "")

with open("binary", "wb") as f:
    # 每2个字符为一组,转换为单个字节写入
    for i in range(0, len(clean_hex), 2):
        chunk = clean_hex[i:i+2]
        f.write(bytes.fromhex(chunk))

内容的提问来源于stack exchange,提问作者TMOTTM

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.04 21:50:31