牛骨文教育服务平台(让学习变的简单)
博文笔记

python 将字符串转化成16进制进行UDP的发送

创建时间:2016-02-02 投稿人: 浏览次数:2226
转载自: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下固定写’x00x00x00......x1ax1a........‘系统是可以识别出来的。但是我们想用拼接的方式来把上面的字符串转化的话是相当麻烦的,几乎每次都是出来字符串的形式 ,实际上,直接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模块来进行字节流转换。


声明:该文观点仅代表作者本人,牛骨文系教育信息发布平台,牛骨文仅提供信息存储空间服务。