如何解决使用python在文件中添加十六进制字符
bin = "420d0d0a010000000000000000000000"
文件 1:
e300 0000 0000 0000 0000 0000 0002 0000
0040 0000 0073 6a00 0000 6400 6401 6c00
5a00 6400 6401 6c01 5a01 6400 6401 6c02
5a02 6400 6401 6c03 5a03 6400 6401 6c02
...
文件 2:
420d 0d0a 0100 0000 0000 0000 0000 0000
e300 0000 0000 0000 0000 0000 0002 0000
0040 0000 0073 6a00 0000 6400 6401 6c00
5a00 6400 6401 6c01 5a01 6400 6401 6c02
5a02 6400 6401 6c03 5a03 6400 6401 6c02
...
我试过了:
bin = "420d0d0a010000000000000000000000"
def change_hex():
with open("file.txt") as f:
lines = f.readlines()
lines[0] = f"{bin}\n"
with open("file.txt","w") as f:
f.writelines(lines)
但是没有用,我遇到了这个错误:
UnicodeDecodeError: 'charmap' codec can't decode byte 0x8f in position 174: character maps to <undefined>
也许这不是正确的做法?
提前致谢,祝您有美好的一天。
解决方法
您需要以二进制模式打开文件并使用 bytes.fromhex
将十六进制 str 转换为字节。
header = bytes.fromhex("420d0d0a010000000000000000000000")
def change_hex():
with open("file.txt","rb") as f:
content = f.read()
with open("file.txt","wb") as f:
f.write(header)
f.write(content)
,
问题是您正在替换新行的第一行,但您需要将新行追加到开头。
尝试更换这一行
lines[0] = f"{bin}\n"
为此
lines.insert(0,bin)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。