示例(使用XVI32.exe(HEX编辑器)):
ASCII文件包含0001FF30
预期结果(仅在示例中添加空格)
HEX - 00 01 FF 30 DEC - 0 1 255 48
现有方法一点也不准确
# Write HEX as characters using bytearray
infile = open('input.txt', 'r')
infiledata = infile.read().strip()
infile.close()
outfile = open('output.txt', 'w')
outfile.write(bytearray.fromhex(infiledata).decode('latin1'))
outfile.close()
# Write HEX as characters using binascii
import binascii
infile = open('input.txt', 'r')
infiledata = infile.read().strip()
infile.close()
outfile = open('output.txt', 'w')
outfile.write(binascii.unhexlify(infiledata).decode('latin1'))
outfile.close()
有没有一种方法可以将HEX直接写入文件,以保持位精度(RAW数据)?当使用从十六进制字符串粘贴功能时,该函数可以使用外部应用程序XVI32.exe起作用。我只是想在Python中执行此操作以节省步骤。
答案 0 :(得分:2)
要以二进制形式写入十六进制转储,您需要删除Latin-1编码(编码方式为 not raw ),然后写入原始字节数组(使用open
中的“ b”模式):
with open("input.txt", "r") as f:
hexdump = f.read().strip()
with open("output.bin", "wb") as f:
f.write(bytearray.fromhex(hexdump))
对于您的示例输入"0001FF30"
,这将提供一个4字节的文件。