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