Python 3-使用现有的HEX字符串并将HEX作为原始数据写入

时间:2018-11-08 15:03:23

标签: python string hex

示例(使用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中执行此操作以节省步骤。

1 个答案:

答案 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字节的文件。