Python 字节流,字符串,十六进制相互转换实例(binascii,bytes)


Posted in Python onMay 11, 2020

问题描述

最近做一个项目,是用Python进行相关的串口操作。及将相关指令通过串口发给设备,设备根据发过来的指令来做出相应的操作,所用的库是Pyserial。在最初开发时,出现的问题在于:别人给的文档里面的命令是十六进制的。例如,给出一个指令:

5aa5 07 82 1000 3132 3334 。 那么,我们需要思考的是,我们如何将上面的指令,转换为pyserial库进行写操作时(write)所需要的bytes类型。

解决方法

首先,我们需要知道的是,我们首先,需要用字符串构造成上面的指令,然后我们将它转换成bytes。我们可以使用encode()函数将字符串转为bytes格式:

Python 字节流,字符串,十六进制相互转换实例(binascii,bytes)

然后我们就可以使用write对串口进行发数据了:

Python 字节流,字符串,十六进制相互转换实例(binascii,bytes)

这里需要说明的是,我们发送的是字符串的1234,串口那边就根据ascii进行解析。所以就变成了 31 32 33 34。

接下来,再来更换一个场景,我们构造好了一个十六进制的bytes,需要将它还原成字符串:

Python 字节流,字符串,十六进制相互转换实例(binascii,bytes)

解析串口发过来的数据,首先我们查看从串口发过来的数据格式:

Python 字节流,字符串,十六进制相互转换实例(binascii,bytes)

可以看到,我们发送的指令,和收到的指令,看起来不一致,那么我们也就无法进行调试,也就无法查看发过来的指令是否有错误,所以,我们需要对接收到的指令进行转换。

Python 字节流,字符串,十六进制相互转换实例(binascii,bytes)

可以看到,我们通过binascii中的函数,对发送过来的数据进行转换,转换成了我们能够看看懂的命令字符串。

接下来,我们如何将收到的命令,转换为文字?例如,我们收到了一串bytes,如果将它转换为明文?

Python 字节流,字符串,十六进制相互转换实例(binascii,bytes)

如上图,我们将收到的bytes已经转换成了字符串格式,然后将里面的31 32 33 34提取出来,然后,我们将它们放入一个数组,经过上面的运算以后,我们就得到了明文数据。

如何将十六进制转换为字节流?

Python 字节流,字符串,十六进制相互转换实例(binascii,bytes)

上述两个方法均可。

总结

由于对上述的知识点不是特别熟悉,所以表述可能有一定的混乱。当初想实现上述几点功能时也费了很大的劲,所以才写在这里供以后后续使用。后来者进行学习时,无需仔细看文字,只需要看图片,了解前后数据类型的转化成什么样,是否符合自己的需求即可。

补充知识:python中字符之间的转换函数

int(x [,base ]) 将x转换为一个整数

long(x [,base ]) 将x转换为一个长整数

base默认参数值为10,也就是说把字符串'x'视为十进制数转换成十进制数

print int('12345',8) # 5349

float(x ) 将x转换到一个浮点数
complex(real [,imag ]) 创建一个复数
str(x ) 将对象 x 转换为字符串
repr(x ) 将对象 x 转换为表达式字符串
eval(str ) 用来计算在字符串中的有效Python表达式,并返回一个对象
tuple(s ) 将序列 s 转换为一个元组
list(s ) 将序列 s 转换为一个列表
chr(x ) 将一个整数转换为一个字符
unichr(x ) 将一个整数转换为Unicode字符
ord(x ) 将一个字符转换为它的整数值
hex(x ) 将一个整数转换为一个十六进制字符串
oct(x ) 将一个整数转换为一个八进制字符串

以上这篇Python 字节流,字符串,十六进制相互转换实例(binascii,bytes)就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python自动化测试工具Splinter简介和使用实例
May 13 Python
Python运算符重载用法实例分析
Jun 01 Python
python实现微信自动回复功能
Apr 11 Python
python爬取网页转换为PDF文件
Jun 07 Python
python中map的基本用法示例
Sep 10 Python
selenium设置proxy、headers的方法(phantomjs、Chrome、Firefox)
Nov 29 Python
对python多线程中互斥锁Threading.Lock的简单应用详解
Jan 11 Python
Python2和Python3的共存和切换使用
Apr 12 Python
python opencv 读取图片 返回图片某像素点的b,g,r值的实现方法
Jul 03 Python
wxPython色环电阻计算器
Nov 18 Python
在Python 的线程中运行协程的方法
Feb 24 Python
Python中如何引入第三方模块
May 27 Python
基于python实现获取网页图片过程解析
May 11 #Python
python将unicode和str互相转化的实现
May 11 #Python
Python3之乱码\xe6\x97\xa0\xe6\xb3\x95处理方式
May 11 #Python
Python urllib.request对象案例解析
May 11 #Python
python将dict中的unicode打印成中文实例
May 11 #Python
ansible-playbook实现自动部署KVM及安装python3的详细教程
May 11 #Python
Python转换字典成为对象,可以用"."方式访问对象属性实例
May 11 #Python
You might like
深入了解php4(2)--重访过去
2006/10/09 PHP
PHP中str_replace函数使用小结
2008/10/11 PHP
php中将时间差转换为字符串提示的实现代码
2011/08/08 PHP
php中一个有意思的日期逻辑处理
2012/03/25 PHP
PHP中如何调用webservice的实例参考
2013/04/25 PHP
thinkphp的URL路由规则与配置实例
2014/11/26 PHP
通过修改Laravel Auth使用salt和password进行认证用户详解
2017/08/17 PHP
Javascript 获取LI里的内容
2008/12/17 Javascript
ext 代码生成器
2009/08/07 Javascript
firefox和IE系列的相关区别整理 以备后用
2009/12/28 Javascript
两个数组去重的JS代码
2013/12/04 Javascript
jQuery实现Twitter的自动文字补齐特效
2014/11/28 Javascript
js设置document.domain实现跨域的注意点分析
2015/05/21 Javascript
详解JavaScript中的构造器Constructor模式
2016/01/14 Javascript
jQuery常用的一些技巧汇总
2016/03/26 Javascript
Nodejs Stream 数据流使用手册
2016/04/17 NodeJs
JavaScript实现获取用户单击body中所有A标签内容的方法
2017/06/05 Javascript
浅谈在koa2中实现页面渲染的全局数据
2017/10/09 Javascript
node+koa2+mysql+bootstrap搭建一个前端论坛
2018/05/06 Javascript
JavaScript中Dom操作实例详解
2019/07/08 Javascript
vue 自定义组件的写法与用法详解
2020/03/04 Javascript
Python实现抓取网页生成Excel文件的方法示例
2017/08/05 Python
django 实现电子支付功能的示例代码
2018/07/25 Python
在Python中过滤Windows文件名中的非法字符方法
2019/06/10 Python
PYQT5开启多个线程和窗口,多线程与多窗口的交互实例
2019/12/13 Python
绝对令人的惊叹的CSS3折叠效果(3D效果)整理
2012/12/30 HTML / CSS
一款基于css3和jquery实现的动画显示弹出层按钮教程
2015/01/04 HTML / CSS
英国家电直销:Appliances Direct
2016/09/22 全球购物
奢华时尚的独特视角:La Garçonne
2018/06/07 全球购物
大学生毕业自荐信
2013/10/10 职场文书
房屋出租协议书范本(标准版)
2014/09/24 职场文书
北京故宫的导游词
2015/01/31 职场文书
2015年学校信息技术工作总结
2015/05/25 职场文书
新闻稿格式范文
2015/07/18 职场文书
代码复现python目标检测yolo3详解预测
2022/05/06 Python
Tomcat安装使用及部署Web项目的3种方法汇总
2022/08/14 Servers