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

2024-10-02 16:32:08 发布

您现在位置:Python中文网/ 问答频道 /正文

将一个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'

但不确定是否有所有不同的“字符”类型:sbc来自^{}页面


Tags: to方法字符串from字节字符packme
1条回答
网友
1楼 · 发布于 2024-10-02 16:32:08

Endianness只适用于大小超过一个字节的值,所以在这里您不必担心它

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

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

相关问题 更多 >