2

私は実際に python3 の struct.pack の動作について疑問に思っていますが、何かを見落としている可能性があります。

UDP 経由で .jpg ファイルを送信しています。ところで: ファイル全体 (~200kB) を一度に送信しようとすると、socket.sendTo()andsendAll()関数が「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: pack expected 8 items forpacking (got 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)

それを機能させるために。何故ですか!?

4

1 に答える 1