我實際上想知道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)
到讓它起作用。這是爲什麼!?