提取二进制数据并按照特定字母转换它们

时间:2013-09-06 15:36:17

标签: python binary comparison

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

我正在使用

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)

并且它不起作用,它进入无限循环

1 个答案:

答案 0 :(得分:0)

您正在尝试将整数0x50hexlify返回的字符串进行比较。 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']