python 将字符串转化成16进制进行UDP的发送
2016-02-02 16:59
645 查看
转载自: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的话,如果是乱码就对了。
重点是struct 中pack函数的使用。因为Python中没有字节(Byte)类型(可以把这里的字符串理解为字节流),所以得用到python的struct模块来进行字节流转换。
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模块来进行字节流转换。
相关文章推荐
- 举例讲解Python中的Null模式与桥接模式编程
- 基于Python的数据分析(2):字符串编码
- python 动态加载module、class、function
- Python开发环境配置:Eclipse+PyDev
- 简介Python设计模式中的代理模式与模板方法模式编程
- python批量ssh 多线程 -优点意思
- 【python】'utf8' codec can't decode byte 0xb6
- Python设计模式编程中的备忘录模式与对象池模式示例
- 把Python默认编码更换为utf-8
- 2.1读写图片
- 删除字符串中的控制字符(python)
- python-连接数据库
- python测试用例覆盖率工具coverage教程(命令行工具)(译)
- 一个可能有用的Python+MQL4混合编程网址
- python 配置github项目配置
- python 笔记 lambda
- python 笔记 lambda
- Python第三讲选择和循环
- Python特殊语法这之:filter、map、reduce、lambda
- python 容器