struct unpack (Type Error: a byte like object is required, not 'str"), Unpack a List?

struct unpack (Type Error: a byte like object is required, not 'str"), Unpack a List?

正在尝试使用 Python 2 中内置的脚本,现在在 Python 3 中使用它,而无需将版本 2 添加到系统中。对于脚本,我得到的唯一错误与此行的 struct.unpack 有关....

def go_parse(rec_list):
    size = (len(rec_list) - 4) / 4
    first_arg = "%sI" % size
    return struct.unpack(first_arg, (rec_list.rstrip ('\xff\xff\xff\xff')))

在这个函数的第 4 行,我得到错误:

TypeError: a bytes-like object is required, not 'str'

我阅读了其他几篇关于此的帖子,并且它需要明确标记为字节,但我似乎无法弄清楚在这种情况下在哪里明确标记它。我发现 here and , did not provide much of an explanation to it. The struct pages 上的其他示例似乎没有涵盖 2-3 的错误可能性...只有 struct.unpack(fmt, buffer)有 fmt 和 buffer 两个参数。基于这些示例,我尝试使用 b 以及参数前和 .strip 的元组上的 bytes 将其明确识别为第二个参数。我尝试将 return 作为 bytearray,但这似乎产生了同样的错误。

作为替代方案,我能够将我想要的字节数据放入列表中,如下所示,将列表解包的方法是什么,尝试 b'i' 只是将 i 视为字节。

list1 = [b'\x03\x00\x00\x00\xff\xff\xff\xff',
b'\x07\x00\x00\x00\x06\x00\x00\x00\xff\xff\xff\xff']

print(struct.unpack('<s', bytes(i)))

字节长度不一,但都以\xff\xff\xff\xff结尾。我看的数据是文本,只是想把它变回文本。

我花了一些时间在文档中回答了我自己的问题,有人为我指明了正确的方向。

生成需要返回到文本以供显示的二进制数据列表,我使用了 codecs,一个标准库。我所有的二进制数据都保存在一个名为 bin_list.

的列表中
import codecs

bin_list = [b'Some Binary data', b'some more binary data']

for i in bin_list:    # used the loop to print each to new line, nice and neat
    print (codecs.decode(i, "utf-8", "ignore"))   # or any other conversion avilable on codecs.