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实现在字符串中查找子字符串的方法
Jul 11 Python
python使用logging模块发送邮件代码示例
Jan 18 Python
TensorFlow用expand_dim()来增加维度的方法
Jul 26 Python
python生成多个只含0,1元素的随机数组或列表的实例
Nov 12 Python
在PyCharm下打包*.py程序成.exe的方法
Nov 29 Python
python3下载抖音视频的完整代码
Jun 05 Python
pytorch加载自定义网络权重的实现
Jan 07 Python
keras实现VGG16方式(预测一张图片)
Jul 07 Python
Django ORM判断查询结果是否为空,判断django中的orm为空实例
Jul 09 Python
pytorch 移动端部署之helloworld的使用
Oct 30 Python
python3通过subprocess模块调用脚本并和脚本交互的操作
Dec 05 Python
Python实战之用tkinter库做一个鼠标模拟点击器
Apr 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
PHP生成HTML静态页面实例代码
2008/08/31 PHP
10个可以简化php开发过程的MySQL工具
2010/04/11 PHP
php获取指定日期之间的各个周和月的起止时间
2014/11/24 PHP
帝国cms目录结构分享
2015/07/06 PHP
详细解读PHP中接口的应用
2015/08/12 PHP
js验证表单第二部分
2006/11/25 Javascript
Js 本页面传值实现代码
2009/05/17 Javascript
jQuery EasyUI API 中文文档 - Tabs标签页/选项卡
2011/10/01 Javascript
JS模拟自动点击的简单实例
2013/08/08 Javascript
jquery 清空file域示例(兼容个浏览器)
2013/10/11 Javascript
JavaScript运行机制之事件循环(Event Loop)详解
2014/10/10 Javascript
JS实现简单路由器功能的方法
2015/05/27 Javascript
Nodejs--post的公式详解
2017/04/29 NodeJs
JS图片预加载插件详解
2017/06/21 Javascript
jQuery 中msgTips 顶部弹窗效果实现代码
2017/08/14 jQuery
jQuery图片加载失败替换默认图片方法汇总
2017/11/29 jQuery
三分钟学会用ES7中的Async/Await进行异步编程
2018/06/14 Javascript
vue v-model实现自定义样式多选与单选功能
2018/07/05 Javascript
详解微信小程序input标签正则初体验
2018/08/18 Javascript
vue .js绑定checkbox并获取、改变选中状态的实例
2018/08/24 Javascript
Vue使用zTree插件封装树组件操作示例
2019/04/25 Javascript
layUI使用layer.open,在content打开数据表格,获取值并返回的方法
2019/09/26 Javascript
Js逆向实现滑动验证码图片还原的示例代码
2020/03/10 Javascript
全面解析js中的原型,原型对象,原型链
2021/01/25 Javascript
Python解释执行原理分析
2014/08/22 Python
Python的迭代器和生成器
2015/07/29 Python
python实现周期方波信号频谱图
2018/07/21 Python
Django REST framework视图的用法
2019/01/16 Python
python中pip的使用和修改下载源的方法
2019/07/08 Python
在SQLite-Python中实现返回、查询中文字段的方法
2019/07/17 Python
Python基于DB-API操作MySQL数据库过程解析
2020/04/23 Python
PyTorch实现重写/改写Dataset并载入Dataloader
2020/07/14 Python
巴西葡萄酒销售网站:Wine.com.br
2017/11/07 全球购物
澳大利亚最大的百货公司:Myer
2018/12/21 全球购物
Tostadora意大利:定制T恤
2019/04/08 全球购物
汇智创新科技发展有限公司
2015/12/06 面试题