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

Python 3中如何将原始二进制文件内容输出为原始十六进制?

解决二进制文件转十六进制(每次处理32字节)的方案

嘿,我懂你现在的头疼点——那些记事本里的乱码完全看不出头绪,不过咱们直接用Python就能精准搞定这个需求,读取原始二进制数据、转成十六进制输出,还能严格每次处理32字节。

下面是直接能用的代码,我会一步步给你解释:

import binascii

# 替换成你的二进制文件路径
file_path = "your_binary_file.bin"

with open(file_path, 'rb') as f:
    while True:
        # 每次读取32字节
        chunk = f.read(32)
        if not chunk:
            break  # 读取完毕,退出循环
        
        # 将二进制块转成大写十六进制字符串
        hex_str = binascii.hexlify(chunk).decode('utf-8').upper()
        
        # 如果你想让十六进制每两个字符(一个字节)之间加空格,方便阅读,可以用下面这行替代上面的hex_str
        # hex_str = ' '.join(f"{byte:02X}" for byte in chunk)
        
        print(hex_str)

关键细节说明:

  • 二进制模式打开:用'rb'模式打开文件是核心,这样才能直接读取原始的二进制字节,而不是尝试用某种编码去解析(这也是记事本乱码的原因——它默认用ASCII/UTF-8去解析非文本的二进制数据)。
  • 每次32字节读取:f.read(32)会每次从文件里读取最多32字节,直到文件末尾,最后一次可能不足32字节,代码也能自动处理。
  • 十六进制转换:
    • binascii.hexlify()会直接把二进制字节转成十六进制的字节串,再用decode('utf-8')转成字符串,upper()确保输出是大写的(比如AA而不是aa)。
    • 如果你想要更灵活的格式(比如每个字节之间加空格),用列表推导式' '.join(f"{byte:02X}" for byte in chunk)会更方便,02X表示格式化两位大写十六进制,不足两位补0。

如果需要把结果保存到文件而不是打印出来,只需要把print(hex_str)改成写入文件的操作就行,比如:

with open("output_hex.txt", 'w') as out_f:
    out_f.write(hex_str + '\n')

这样处理下来,你就能得到完全符合需求的十六进制输出,每一行对应原文件里的32字节内容~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 08:06:18