2021年4月7日 星期三

Python 與 C資料型態string和binary的網路傳輸與處理

 在網路上可以用string或binary兩種型態來傳輸資料,但如果為了統一性,在傳送端使用string型態時,有時必需要傳輸binary型態的資料,這時會把16進位表示法拆成兩個字元當作string來傳送,例如0xAB拆成'A'、'B',就可以統一用string型態來傳送。麻煩的是到了接收端要把字元'A'、'B'再轉回0xAB,如果兩端都是用同一個熟悉的程式語言,大概不會有什麼問題。現在遇到傳送端用C,接收端用python。傳送端很簡單就拆開了,到了接收端是比較不熟的python就麻煩了,找了半天,用這個就解決了,程式碼比C還少很多,如下:

import binascii

>>> binascii.unhexlify('AB02CF4AFF') #python string every two chars to byte

b'\xab\x02\xcfJ\xff'


另外在接收端可以用驗證型別type函式,判斷資料是否需要做上面的轉換,如:

var = 'AB02CF4AFF'

if type(var) == str:

binascii.unhexlify('AB02CF4AFF')

else

do something

沒有留言:

張貼留言