Python2.7写入十六进制字符串到二进制文件时0A前多出0D问题
问题修复方案
问题根因
- Python 2.7 Windows 环境下,
open函数默认的w写入模式为文本模式 - 文本模式下系统会自动对换行符做平台适配:将字节
0x0A(对应\n)自动转换为 Windows 标准换行序列0x0D 0x0A(对应\r\n),这就是你看到每个0A前多出0D、文件字节数偏大的原因。
修复代码
将文件打开模式替换为二进制写入模式 wb 即可完全避免自动转义,写入的字节和输入的十六进制字符串完全一一对应:
import binascii s = "0ABD" f = open("output", "wb") f.write(binascii.a2b_hex(s)) f.close()
补充说明:后续读取该文件时,无论使用 Python 还是 VB.NET,都建议使用二进制模式读取,避免出现反向的换行符转义问题。
内容的提问来源于stack exchange,提问作者Omar Romdhani
相关产品推荐
相关产品推荐

