struct - 's'的参数必须是一个bytes对象,但已经是一个bytes对象

时间:2017-01-21 23:29:08

标签: python struct

我目前正在尝试修复我正在开发的软件包中的错误。问题似乎是抛出错误的struct.pack函数:

import struct

second_arg = b'LASF_Projection\x00'

print(type(second_arg))
struct.pack("<ssssssssssssssss",  *second_arg)

我试图在其他SO答案页面上使用为此错误提供的答案,但似乎无法正常工作,并且错误仍然存​​在。

下面是我一直处理的输入的简化版本,作为复制错误的包的输出:

    <class 'bytes'>
Traceback (most recent call last):
  File "C:/pyfor/anothersandbox.py", line 7, in <module>
    struct.pack(b"<ssssssssssssssss",  *second_arg)
struct.error: argument for 's' must be a bytes object

这导致输出:

public Interface IBook{ 
   string Title {get; set;}
   func<int,string> ReadPage
}

我的怀疑是,在解压缩时,* second_arg不再是字节格式,并且正在抛出错误。这种怀疑是否正确,如果可以的话,可以动态地将second_arg的解压缩部分转换为字节格式吗?

1 个答案:

答案 0 :(得分:0)

你的怀疑是正确的。字节是范围(256)中的整数序列。在3.6:

>>> [*b'LASF_Projection\x00']
[76, 65, 83, 70, 95, 80, 114, 111, 106, 101, 99, 116, 105, 111, 110, 0]

这些因素是你传递的。