[英]Python3 searching in bytearray
我在使用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)
之前我還沒有真正使用過二進制文件,所以我不知道也許我實際上缺少了一些非常簡單的東西。
您需要在下一個位置開始搜索,因此請在以下位置搜索:
file.find(msg_start_token, start_pos + 1)
因為在搜索開始start_pos
,如果msg_start_token
在那個位置找到,找到會返回start_pos
當然。
至於.index()
和.find()
之間的區別; 如果未找到子字符串,則.index()
引發ValueError
異常,而.find()
返回-1
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.