我有一个十六进制转储,我需要在另一个文件的格式化显示中显示。 在Python中,我们可以将字节读为1个字符,即“C'”,是否有一个库,我们可以将每个字节读取为' C1'并转换为字符' A'以显示?
HEX DUMP
C1C20300 D1D2D3F0 00000000 00000000
000042F9 F8F0F800 40404040 40404040
40404040 C3C4C5C6 C7C8C9D2 40404040
40404040 40D1C1E8 D1C1E840 40404040
40404040 40404040 40404040 40404040
40404040 40404040 40404040 E9E8F040
EBCDIC中的CHARS
A B 0300 I J K 0 00000000 00000000
000042 9 8 0 800
C D E F G H I K
J A Y J A Y
Z Y 0
答案 0 :(得分:0)
您肯定可以从十六进制转储转到整数列表。 (我假设文件不是太大;如果是,请改用readline()
。)
dump = ''.join(open("dump").read().split())
raw = bytes(int(dump[i:i+2], 16) for i in range(0, len(dump), 2))
# b'\xc1\xc2\x03\x00\xd1\xd2\xd3\xf0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00B\xf9\xf8\xf0\xf8\x00@@@@@@@@@@@@\xc3\xc4\xc5\xc6\xc7\xc8\xc9\xd2@@@@@@@@@\xd1\xc1\xe8\xd1\xc1\xe8@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@\xe9\xe8\xf0@'
事实上,EDCDIC被Python称为“cp500”:
text = raw.decode("cp500")
#'AB\x03\x00JKL0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00â9808\x00 CDEFGHIK JAYJAY ZY0 '