2012-08-22 19 views
3

我必須獲取字節數組並將其發送到套接字。在Python中使用字節

該結構看起來像:1個字節+ 2個字節+ 2個字節。

第一個字節是數字'5',第二個2字節應該取自變量first,第三個2字節應該取自變量second。什麼是在Python中做到這一點的正確方法?

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

回答

7

使用struct module

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

您可能想弄清楚如果你的數據是:a)很少或大端和b)帶符號;上面的例子使用了big-endian排序和簽名值。

結果(在python 3中)是一個bytes對象。

+0

就是這樣,謝謝。我需要網絡字節順序(大) – Ockonal

+0

@Ockonal:然後在開始時使用'>'格式標記;我的例子現在使用它。 –

+0

考慮如果重複發生字節打包,則創建一個Struct對象(來自同一個模塊)。 – cleong