在python中打包字符串的正确方法

在python中打包字符串的正确方法,python,python-3.x,struct,bit-packing,Python,Python 3.x,Struct,Bit Packing,将一个5字节的asci字符串打包到python中,使其成为8字节和小尾端的正确方法是什么?例如,类似于: from struct import pack pack('<ccccc3x', 'David') >>> pack('<ccccc3x', *bytearray(b'David')) 来自结构导入包 pack('>>pack('Endianness only)对于大小超过一个字节的值来说是一件事,所以您不必在这里担心它 我能想到的将一个5字节的字节通过te

将一个5字节的asci字符串打包到python中,使其成为8字节和小尾端的正确方法是什么?例如,类似于:

from struct import pack
pack('<ccccc3x', 'David')
>>> pack('<ccccc3x', *bytearray(b'David'))
来自结构导入包

pack('>>pack('Endianness only)对于大小超过一个字节的值来说是一件事,所以您不必在这里担心它

我能想到的将一个5字节的字节通过testring填充到8字节的最简洁的方法是

b'David'.ljust(8, b'\0')

真整洁solution@AKX这是一个好主意!我实际上是在做
pack
,因为我有一个很大的bytearray,我只是在它上面添加/扩展值,但是对于asci字符串,我认为这要好得多。
# 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'
b'David'.ljust(8, b'\0')