我正在读一个包含十六进制字节的文件,我相信,下面是我写的:
def ByteToHexToDec( byteStr ):
hex_list = [ "%02X" % ord(x) if "\\x" in r"%r" % x else x for x in byteStr];
return hex_list;
with open("file.z","rb") as lines:
for line in lines:
print ByteToHexToDec(line);
下面是它返回的结果:
['04', '80', 'e', '06', 'C0', 'l', '06', 'F0', ',', '02', '00', 'w', '06', 'F0', 'r', '06', 'C0', 'd', '02', '10', '\n']
我很确定这是在说hello world(或者类似的东西),我知道“hello world”的十六进制是这样的:
480065006C006C006F00200077006F0072006C00640021
如果你仔细看,“48”与十六进制列表中的前两个元素匹配,除了零在路上,字母e有十六进制值65。。。你知道吗
那么文件中的字节有什么错误吗?还是我读错了字节?你知道吗
谢谢
文件可在此处下载: https://drive.google.com/file/d/0B84_Z1V4nj9SS0x4MlR0a2poMkE/view?usp=sharing
以十六进制表示的文件内容:
你在尝试什么?你知道吗
注意binascii模块中的hexlify/unhexlify https://docs.python.org/2/library/binascii.html
文件中的每一个字节都用一个开始和结尾的
0
填充:H
是04 80
而不是48
e
是65
(正确)l
是06 c0
而不是6c
l
是6c
(正确)o
是06 f0
而不是6f
,
是2c
(正确)(space) is
02 00
而不是20
等等
如果你想把它变回
Hello, world
,你必须修复破损处:演示:
相关问题 更多 >
编程相关推荐