1
我想要綁定多個大小的數據,如一個字節值,兩個字節值,一個字節值,然後是字符串。 這是一個由簡單的聊天客戶端發送的數據包。將C數據類型轉換爲Python
我想要的網絡包在圖中。總共4個字節的頭部,後面跟着body。
我該如何使這個數據包由Python?
有沒有解決方案來存儲大小的明確定義的數據?
我想要綁定多個大小的數據,如一個字節值,兩個字節值,一個字節值,然後是字符串。 這是一個由簡單的聊天客戶端發送的數據包。將C數據類型轉換爲Python
我想要的網絡包在圖中。總共4個字節的頭部,後面跟着body。
我該如何使這個數據包由Python?
有沒有解決方案來存儲大小的明確定義的數據?
您正在尋找Python's struct
。這裏有一個如何做你與struct
問的一個例子:
from struct import *
header = pack('!chcs', clientID, bodySize, networkMessageId, body)
現在header
將有包在裏面,你可以在(你需要用它做或其他)網絡發送。
既然你的圖片顯示「網絡」,我認爲這需要在網絡字節順序,這就是開始意味着!
。
非常感謝你! 但是我怎樣才能定義成員的大小? 特別是,我想在bodysize中存儲2字節值 –
請參閱我鏈接的[struct]的文檔([或者直接跳轉到此表](https://docs.python.org/2/library/struct html的#格式字符))。給「pack」的字符串中的字符指定了大小。 「c」表示一個單字節,「h」表示一個短整數(根據python的定義,短整數是兩個字節),'s'表示一個字符串。 –
所以字符串'!chcs'的字面意義如下:「將以下參數按網絡字節順序放入大小爲1個字節,2個字節,1個字節和一個字符串的數組中。請注意,我組成了「clientID」,「networkMessageId」等名稱,您應該將其替換爲要發送的數據。 –