我需要从二进制文件中提取几个字节。每个字节代表以特定方式编码的字母字符。所以我正在考虑提取字节,然后将它们逐个与包含完整字母的数组进行比较。
我正在使用
byte = filename.read(1)
byte = binascii.hexlify(byte)
从文件中读取单个字节,但我不明白当我找到终止十六进制值0x50时如何停止读取。
(我今天刚开始学习python)
提前致谢
PS:这是我试过的完整代码
byte = filename.read(1)
byte = binascii.hexlify(byte)
while byte !=0x50:
tempName.append(byte)
byte = filename.read(1)
byte = binascii.hexlify(byte)
并且它不起作用,它进入无限循环
答案 0 :(得分:0)
您正在尝试将整数0x50
与hexlify
返回的字符串进行比较。 byte != 0x50
将始终评估为真。
使用ord
查找字符的数值。样品用法:
file = open("input.txt", "rb")
bytes = []
while True:
byte = file.read(1)
print byte
bytes.append(byte)
if ord(byte) == 0x50:
break
print bytes
input.txt
的内容:
Hello, world!P Lorem ipsum dolor sit amet
(注意大写P的数值为0x50)
输出:
['H', 'e', 'l', 'l', 'o', ',', ' ', 'w', 'o', 'r', 'l', 'd', '!', 'P']