2
我想訪問ctype.Structure,我已經定義了Python中的字節(b''
)。如何將ctypes轉換爲字節
我不知道這是一個正確的方法?我需要發送一個頭(它應該是架構免費)到其他設備。
所以我定義它,例如爲:
class Header(ctypes.Structure):
_pack_ = 2
_fields_ = [
('version', c_uint8),
('additional_options', c_uint8),
('soft_version', c_uint16),
('compilation_time', c_uint8 * 6),
('crc', c_uint16)
]
現在我需要計算CRC。從version
提交到compilation_time
我有一個與字節一起工作的函數。
因此,對於我來說,只要將ctypes.Structure轉換爲字節(b'')或直接訪問內存並更改最後兩個字節即可。
我曾嘗試使用struct但我並沒有發現編譯選項。
BIG缺點是可讀性。我的頭文件長度爲128bytes,所以它會真的搞砸並且不可讀(與ctypes相比)。 第二個什麼機器哪裏'H' ='無符號短'**!= ** 16位? –
@ S.R您提到「嘗試使用struct但我沒有找到** pragma **選項」。如果你根本不想使用struct,那麼更具體一些。無論如何,更新爲顯示ctypes解決方案。 –
@MarekTolonen在我看來,這兩個選項都不如Python代碼的其餘部分可讀。但我最終使用了本地'struct'。 –