我实际上想知道python3的struct.pack行为,但也许我错过了一些东西。python3 struct.pack字符串作为参数
我正在通过UDP提交一个.jpg文件。 Btw:当我尝试一次提交整个文件(〜200kB)时,socket.sendTo()
和sendAll()
函数会抛出“Python IOError:[Errno 90] Message too long”。所以我提交了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)
到让它起作用。这是为什么!?