1. 程式人生 > >python 將字串轉化成16進位制進行UDP的傳送

python 將字串轉化成16進位制進行UDP的傳送

轉載自:Python UDP Socket 16進位制資料傳送 | 北京小芽科技

http://xiaoyatec.com/2015/12/08/python-udp-socket-16%E8%BF%9B%E5%88%B6%E6%95%B0%E6%8D%AE%E5%8F%91%E9%80%81/

http://blog.sina.com.cn/s/blog_4b5039210100f1tu.html

現在有一字串‘00 00 00 00 00 00 00 00 00 00 00 00 00 00 1a fe 34 f7 52

想生成對應的十六進位制包來進行傳送。

如果你直接在python下固定寫’\x00\x00\x00......\x1a\x1a........‘系統是可以識別出來的。但是我們想用拼接的方式來把上面的字串轉化的話是相當麻煩的,幾乎每次都是出來字串的形式 ,實際上,直接print的話,如果是亂碼就對了。

def strconvert(s):
    s=str(s).strip().split(' ')
    my=r'\x'
    fin=''
    for i in range(len(s)):
        fin=fin+struct.pack('B',int(s[i],16))
    return fin

重點是struct 中pack函式的使用。因為Python中沒有位元組(Byte)型別(可以把這裡的字串理解為位元組流),所以得用到python的struct模組來進行位元組流轉換。