[英]Unpacking byte values in Python
我正在嘗試解壓縮以下數據,但似乎無法弄清楚。 這是從設備讀取儀表值的數字混音器返回的字節數據。
文檔建議返回的 blob 將被格式化為:
執行 print(data) 會顯示來自設備的實時數據中的以下 blob:
['F\x00\x00\x00\xd4\xc6\x9a7\xce-\xee8G\xa6=6\x88\x80X7\x83\x99#7\xd1\xd3A7\x88\x80X7\x8cM\x9d7\x9b\xeeK7\xeb,\x847\xd4\xc6\x9a7*q\x8a7dlN7=\xfcU7\xd1\xde\x9f7\xdc\xa4\x817q=\x937b\x9cg7\x1d\xba77\x9b\xeeK7x\xb8q7\x1d^\x807\xe1P?7\x90H\xba7\x1d^\x807o\x86]7\xf8\xf1P7\x88\x80X7\xc5\xa8\xa87:\xdcF7\xdc\x1fe7TaI7\x01\t\xb87.\xebW7\xca\xf3a7\xd6\xef[7=\xfbQ7\xe8\xfa\x957n\xbb\xd54n\xbb\xd54n\xbb\xd54n\xbb\xd54n\xbb\xd54n\xbb\xd54n\xbb\xd54n\xbb\xd54n\xbb\xd54n\xbb\xd54\x9d\xa2\x867n\xbb\xd54n\xbb\xd54n\xbb\xd54n\xbb\xd54n\xbb\xd54n\xbb\xd54n\xbb\xd54n\xbb\xd54n\xbb\xd54n\xbb\xd54n\xbb\xd54n\xbb\xd54n\xbb\xd54n\xbb\xd54n\xbb\xd54\x1e\x93\x867n\xbb\xd54n\xbb\xd54n\xbb\xd54n\xbb\xd54n\xbb\xd54']
我嘗試了struct.unpack
的幾種變體,但收到“結構格式中的錯誤字符”,並且文檔中沒有任何示例談論與此類似的布局。 我還嘗試提取字節並使用在線轉換器對其進行轉換,但無法獲得任何類似於預期值的內容。 我確定我誤解了一些簡單的事情嗎?
上面的示例中缺少int1
。 它以 little-endian 的 70 開頭,然后以 70 個浮點數繼續。 所以你可以用以下方式解壓它:
int2 = int(*unpack('<i', data[:4]))
floats = unpack('<' + int2*'f', data[4:])
如果開頭有一個int1
(如提供的規范中所述),那么您可以使用
int1 = int(*unpack('>i', data[:4]))
int2 = int(*unpack('<i', data[4:8]))
floats = unpack('<' + int2*'f', data[8:])
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.