0

我有一个文件,我使用二进制格式打开

with open(filename, 'br') as f2

然后我需要提取某些十六进制块。代码中会有很多这样的“日期”,如下所示:

F2 96 E6 20 36 1B E4 40

我需要提取它的每个实例,以便我完成对它的日期编辑。每个“日期”将以十六进制字符 40 结束,如上所述。

我已经尝试过正则表达式,但这些似乎没有按我的意愿工作。

例如

re.findall(b'............\\\x40', filename)

有人可以帮忙吗?

4

1 回答 1

1

我认为您将字节与十六进制表示混淆了。0x40是整数的十六进制表示,64它是符号的 ascii 代码@

with open(filename, 'rb') as f:
    results = re.findall('.{7}@', f.read())
    print results

请注意,以下正则表达式是等效的:'.{7}@', '.......@','.......\x40'

>>> print 0x40, hex(64)
64 0x40
>>> print chr(0x40)
@
于 2013-09-17T11:18:11.363 回答