[英]Proper way to pack a string in python
將一個五字節的 asci 字符串打包到 python 中以便它是 8 字節和小端的正確方法是什么? 例如,類似於:
from struct import pack
pack('<ccccc3x', 'David')
或者:
pack('<ccccc3x', b'D', b'a', b'v', b'i', b'd')
# this works but seems unreadable to me
這樣做的正確(或最簡單)方法是什么? 理想情況下,類似於:
>>> pack('<ccccc3x', *bytearray(b'David'))
但似乎我無法傳遞列表或進行變量解包,我必須為每個字符做一個新的位置參數。
我能想到的最好的方法如下,但我希望有更好的方法來做到這一點:
# why won't it allow me to use `c`(har) and only `b`(yte) ?
>>> pack('<5b3x', *bytearray(b'David'))
b'David\x00\x00\x00'
更新:似乎這可能是最好的方法:
>>> pack('<5s3x', b'David')
b'David\x00\x00\x00'
盡管不確定struct
頁面中所有不同的“char”類型: s
、 b
和c
。
Endianness 僅適用於大小超過一個字節的值,因此您無需在此處擔心。
我能想到的將 5 字節字節串填充為 8 字節的最簡潔方法是
b'David'.ljust(8, b'\0')
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.