簡體   English   中英

如何在 python 中解壓 uint16_t 類型的結構

[英]how to unpack a struct with uint16_t type in python

我正在嘗試在 python 中解壓 ElfHeader。 Elf64_Edhr 結構中的e_type類型是 uint16_t,我該如何解壓它? 我只在 python struct docs 中找到了一種解壓 4 位 unsigned int 的方法。

可能 Python 支持的每台機器每個字節都有 8 位,因此 16 位 integer 使用 2 個字節。 我們希望每台機器上的尺寸都相同,因此我們查看標准尺寸列。 標准大小為 2 字節或 16 位的無符號 integer 的格式為H

對於相關的標准尺寸, unpack模式必須以< , > , ! =取決於字節序。 ELF 支持 little-endian 和 big-endian 值,具體取決於文件偏移量 0x05 處的字節,因此您的模式將以<>開頭,具體取決於文件的字節序。

  • 如果偏移量 0x05 處的字節為1 ,則它是一個小端文件,因此您的模式必須以<開頭。

    LE uint16_t 0x3456 = 13398 是b'\x56\x34'

     >>> x = b'\x56\x34' >>> struct.unpack('<H', x) (13398,)
  • 如果偏移量 0x05 處的字節為2 ,則它是一個大端文件,因此您的模式必須以>開頭。

    BE uint16_t 0x3456 = 13398 是b'\x34\x56'

     >>> x = b'\x34\x56' >>> struct.unpack('>H', x) (13398,)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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