gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-04 08:54:05 28 4
gpt4 key购买 nike

将一个五字节的 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'
不确定所有不同的'char'-ish 类型: s , b , 和 c来自 struct 页。

最佳答案

Endianness 仅适用于大小超过一个字节的值,因此您无需在此处担心。
我能想到的将 5 字节字节串填充为 8 字节的最简洁方法是

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

关于python - 在python中打包字符串的正确方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63931703/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com