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爬虫之爬虫的定义及URL构成
Nov 04 Python
Python自动重试HTTP连接装饰器
Apr 28 Python
Python下线程之间的共享和释放示例
May 04 Python
Python中的TCP socket写法示例
May 11 Python
对Python 简单串口收发GUI界面的实例详解
Jun 12 Python
解决Pycharm 包已经下载,但是运行代码提示找不到模块的问题
Aug 31 Python
python 求10个数的平均数实例
Dec 16 Python
Windows上安装tensorflow  详细教程(图文详解)
Feb 04 Python
Python 自由定制表格的实现示例
Mar 20 Python
python随机模块random的22种函数(小结)
May 15 Python
基于python制作简易版学生信息管理系统
Apr 20 Python
Python中OpenCV实现查找轮廓的实例
Jun 08 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
如何在PHP中使用Oracle数据库(1)
2006/10/09 PHP
社区(php&&mysql)四
2006/10/09 PHP
两个开源的Php输出Excel文件类
2010/02/08 PHP
WordPress中对访客评论功能的一些优化方法
2015/11/24 PHP
浅谈php中变量的数据类型判断函数
2017/03/04 PHP
Yii框架响应组件用法实例分析
2019/09/04 PHP
jquery.ui.draggable中文文档(原文翻译)
2013/11/15 Javascript
js中的事件捕捉模型与冒泡模型实例分析
2015/01/10 Javascript
js实现select跳转菜单新窗口效果代码分享(超简单)
2015/08/21 Javascript
AngularJS身份验证的方法
2016/02/17 Javascript
浅谈JavaScript 标准对象
2016/06/02 Javascript
JS简单判断字符在另一个字符串中出现次数的2种常用方法
2017/04/20 Javascript
vue 路由页面之间实现用手指进行滑动的方法
2018/02/23 Javascript
vue自定义js图片碎片轮播图切换效果的实现代码
2019/04/28 Javascript
微信小程序wx.request拦截器使用详解
2019/07/09 Javascript
jquery实现图片无缝滚动 蒙版遮蔽效果
2020/01/11 jQuery
python实现k均值算法示例(k均值聚类算法)
2014/03/16 Python
Python循环语句之break与continue的用法
2015/10/14 Python
Python内置的HTTP协议服务器SimpleHTTPServer使用指南
2016/03/30 Python
python django 增删改查操作 数据库Mysql
2017/07/27 Python
python批量下载网站马拉松照片的完整步骤
2018/12/05 Python
python 自定义对象的打印方法
2019/01/12 Python
python误差棒图errorbar()函数实例解析
2020/02/11 Python
使用pymysql查询数据库,把结果保存为列表并获取指定元素下标实例
2020/05/15 Python
Kears 使用:通过回调函数保存最佳准确率下的模型操作
2020/06/17 Python
python 通过pip freeze、dowload打离线包及自动安装的过程详解(适用于保密的离线环境
2020/12/14 Python
意大利包包和行李箱销售网站:Bagaglio.it
2021/03/02 全球购物
工程造价专业大学生职业生涯规划书
2014/01/18 职场文书
开业庆典答谢词
2014/01/18 职场文书
大二学生学习个人自我评价
2014/01/19 职场文书
省级优秀毕业生主要事迹
2014/05/29 职场文书
财政局长个人总结
2015/03/04 职场文书
初中重阳节活动总结
2015/05/05 职场文书
彻底解决MySQL使用中文乱码的方法
2022/01/22 MySQL
MySQL创建管理HASH分区
2022/04/13 MySQL
MySQL索引失效十种场景与优化方案
2023/05/08 MySQL