3

バイト配列を取得してソケットに送信する必要があります。

構造は次のようになります: 1 バイト + 2 バイト + 2 バイト。

最初のバイトは番号 '5' で、2 番目の 2 バイトは variable から取得するfirst必要があり、3 番目の 2 バイトは variable から取得する必要がありますsecond。Pythonでこれを行う正しい方法は何ですか?

id = 5      # Fill as 1 byte
first = 42  # Fill as 2 bytes
second = 58 # The same as first
4

1 に答える 1

7

structモジュールを使用します:

>>> import struct
>>> id, first, second = 5, 42, 58
>>> struct.pack('>bhb', id, first, second)
b'\x05\x00*:'

データが a) リトル エンディアンかビッグ エンディアンか、および b) 符号付きか符号なしかを把握したい場合があります。上記の例では、ビッグ エンディアンの順序と符号付きの値を使用しています。

結果 (python 3) はbytesオブジェクトです。

于 2012-08-22T12:30:53.240 に答える