5 バイトの 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'
s
ページの、b
、およびc
のすべての異なる「文字」っぽいタイプについてはわかりませんstruct
。