簡體   English   中英

字節數組中的Python3搜索

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM