我实际上想知道 python3 的 struct.pack 行为,但也许我错过了一些东西。
我正在通过 UDP 提交一个 .jpg 文件。顺便说一句:当我尝试一次提交整个文件 (~200kB) 时, socket.sendTo()
and函数会抛出“Python IOError: [Errno 90] Message too long”。sendAll()
所以我以 1024 字节为单位提交文件。没有问题,我只是想知道为什么我在 python 文档中没有发现这个大小限制。
无论如何,我的主要问题是:我需要 struct.pack 在每个片段的开头放置一些信息-> 2 个固定大小的字符串。
但是当我这样做的时候
chunk = struct.pack("!3c4cI", bytes("JPG", "utf-8"), bytes(dev_id, "utf-8"), i)
它是“struct.error:包装预期的 8 个包装物品(得到 3 个)”
所以我得走了
chunk = struct.pack("!3c4ci", b"J", b"P", b"G",
bytes(dev_id[0:1], "utf-8"),
bytes(dev_id[1:2], "utf-8"),
bytes(dev_id[2:3], "utf-8"),
bytes(dev_id[3:4], "utf-8"), i)
让它工作。这是为什么!?