J91*_*321 5 python binary file find python-3.x
我在使用bytesarray的find()/ index()(不知道它们之间是否有任何区别)时遇到了一个奇怪的问题。
我正在使用二进制文件,已将其加载为bytesarray,现在需要查找指示消息开头和消息结尾的标记。找到消息的开头(0x03 0x02)一切正常,但是当我搜索结尾(0x00)时,我一直保持在开始搜索的位置
msg_start_token = bytearray((int(0x03), int(0x02)))
msg_end_token = bytes(int(0x00))
def get_message(file,start_pos):
msg_start = file.find(msg_start_token,start_pos) + 2
print(hex(msg_start))
msg_end = file.find(msg_end_token,msg_start)
print(hex(msg_end))
msg = file[msg_start:msg_end]
print(msg)
return (msg, msg_end)
Run Code Online (Sandbox Code Playgroud)
之前我还没有真正使用过二进制文件,所以我不知道也许我错过了实际上非常简单的东西。
您需要从下一个位置开始搜索,因此搜索:
file.find(msg_start_token, start_pos + 1)
Run Code Online (Sandbox Code Playgroud)
因为搜索从 开始, start_pos如果msg_start_token在该位置找到,findstart_pos当然会返回。
至于.index()和之间的区别.find();如果未找到子字符串,则.index()引发异常,而返回。ValueError.find()-1
| 归档时间: |
|
| 查看次数: |
5944 次 |
| 最近记录: |