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