import re
a = 0xf27f28d7
b = a.to_bytes(4, 'little')
with open(fimage, 'rb') as f:
print([hex(m.start(0)] for m in re.finditer(b, f.read()))
# b = b'xd7(x7fxf2'
以上代码返回错误:
缺失(,位置1 处的未终止子模式
我知道字节中包含一个(
。它应该是(
。如何转换为字节以确保转义没有错误?我使用的是Python 3.6。提前谢谢。
你可以像一样转换你的字节
b = b'xd7(x7fxf2'
b = ''.join(['\x'+hex(c)[2:] for c in b]).encode()
您可以使用re.escape()
,但它也会转义与可打印字符不对应的字节,因此需要将它们过滤掉。
import re
b = b'xd7(x7fxf2'
k = []
for i in b:
i_bytes = bytes([i])
if i < 0x80 and chr(i).isprintable():
i_bytes = re.escape(i_bytes)
k.append(i_bytes)
print(b''.join(k)) # -> b'xd7\(x7fxf2'
我确信这个代码可以改进,只是不确定如何改进。