首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将大量参数传递给struct.pack

将大量参数传递给struct.pack
EN

Stack Overflow用户
提问于 2010-12-22 18:35:22
回答 2查看 1.1K关注 0票数 1

我使用的是struct.pack方法,它接受可变数量的参数。我想把一个字符串转换成字节。如果字符串很短(例如'name'),我可以这样做:

代码语言:javascript
复制
bytes = struct.pack('4c','n','a','m','e')

但是当我的字符串有80个字符时该怎么办呢?

我尝试了格式字符串“%s”,而不是struct.pack的“80c”,但结果与上面调用的结果不同。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-12-22 18:42:01

使用"80s",而不仅仅是"s“。输入是单个字符串,而不是一系列字符。即

代码语言:javascript
复制
bytes = struct.pack('4s','name')

请注意,如果指定的长度大于输入的长度,则输出将以空值填充。

票数 1
EN

Stack Overflow用户

发布于 2010-12-22 18:40:56

这没有多大意义。在python2.x中,字符串已经是字节了;所以你可以这样做:

代码语言:javascript
复制
my_string = 'I am some big string'
my_bytes = my_string

在python 3中,字符串默认是unicode对象。要获取字节,您必须对字符串进行编码。

代码语言:javascript
复制
my_bytes = my_string.encode('utf-8')

如果你真的想使用struct.pack,你可以使用* syntax作为described in the tutorial

代码语言:javascript
复制
my_bytes = struct.pack('20c', *my_string)

代码语言:javascript
复制
my_bytes = struct.pack('20s', my_string)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4508272

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档