Python写入十六进制字符串到文件时,如何避免Windows自动添加CR?
解决Windows下写入LF自动添加CR的问题
Windows系统中,用文本模式("w")打开文件时,会自动把换行符LF(0A)转换成CRLF(0D0A),这就是你看到额外0D字节的原因。要阻止这个行为,只需改用二进制写入模式打开文件,同时修正十六进制字符串转字节的方式:
修正后的代码
toWrite = "020203480A" # 将十六进制字符串转为字节序列 byte_data = bytes.fromhex(toWrite) # 以二进制写入模式打开文件 with open("example.bin", "wb") as file: file.write(byte_data)
关键说明
"wb"模式:二进制写入模式,此时文件操作不会对任何字节做自动转换,写入的内容会原封不动保存到文件中,彻底避免LF被转成CRLF的问题。bytes.fromhex():Python内置方法,能直接将十六进制字符串按两位一组解析成对应的字节,完美适配你写入多字节二进制数据的需求。
原来的代码存在两个问题:一是用了文本模式导致换行符转换,二是chr(int(toWrite, 16))会把整个长十六进制字符串解析成单个整数再转成Unicode字符,无法正确生成多字节的二进制数据。
内容的提问来源于stack exchange,提问作者mine_greg
相关产品推荐
相关产品推荐

