目标是从二进制文件中提取图像。如何在二进制文件中搜索文件类型的标记,SOI和EOI。 常规find()函数似乎不起作用,因为我无法将二进制文件作为字符串加载。
答案 0 :(得分:0)
您想要搜索流中的魔术字(而不是字符串)。
以下是这个想法:
从该文件中读取一个char(使用file.read(1)) 使用魔术字的队列长度,检查每次读取的队列
MAGIC_WORD = r'JPEG' # it's example... just example
l = list(c for c in f.read(len(MAGIC_WORD)))
offset = 0
while True:
if ''.join(l) == MAGIC_WORD:
return offset
offset += 1
l.pop(0)
l.append(f.read(1))
如果您觉得有必要......我的意思是,需要速度,请查看this wiki文章,使用更智能的算法,最后切换到c ++。
抱歉,我不知道任何提供这个的python库。祝你好运
答案 1 :(得分:0)
另一个想法:
如果你可以使用unix shell(而不是Python),你可以尝试使用unix管道并链接一些搜索工具(如grep和xxd)
像
cat yourbinfile | xxd -p | grep HEXMAGICWORD
其中HEXMAGICWORD是
echo jpeg | xxd -p
我对shell不太熟悉,所以这不是确切的答案。