0

我需要从二进制文件中提取几个字节。每个字节代表一个以特定方式编码的字母字符。所以我正在考虑提取字节,然后将它们与包含完整字母的数组一一进行比较。

我在用着

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)

它不起作用,它进入一个无限循环

4

1 回答 1

0

您正在尝试将整数0x50与返回的字符串进行比较hexlifybyte != 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']
于 2013-09-06T16:40:14.053 回答