簡體   English   中英

在python中以正確的格式打包和解壓縮

[英]pack and unpack at the right format in python

我正在尋找從緩沖區解包一個字符串及其長度。

例如,要從此緩沖區獲取(4, 'Gégé')
b'\\x00\\x04G\\xE9g\\xe9'

有人知道該怎么做嗎?

長度數據看起來像一個大端無符號16位整數,字符串數據看起來像是使用Latin1編碼。 如果正確的話,您可以像這樣提取它:

from struct import unpack

def extract(buff):
    return unpack(b'>H', buff[:2])[0], buff[2:].decode('latin1')

buff = b'\x00\x04G\xE9g\xe9'
print(extract(buff))

產量

(4, 'Gégé')

編碼的另一種可能性是舊的Windows代碼頁1252 ,可以使用.decode('cp1252')對其進行解碼。


上面的代碼在Python 2和Python 3中都適用。但是在Python 3中,有一個更簡單的方法:我們不需要struct.unpack ,我們可以使用int.from_bytes方法。

def extract(buff):
    return int.from_bytes(buff[:2], 'big'), buff[2:].decode('latin1')

暫無
暫無

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

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