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中 ? : 三元表达式的使用介绍
Oct 09 Python
python中文乱码的解决方法
Nov 04 Python
Python单元测试框架unittest使用方法讲解
Apr 13 Python
Python中字典的基本知识初步介绍
May 21 Python
Python的Django框架中自定义模版标签的示例
Jul 20 Python
推荐10款最受Python开发者欢迎的Python IDE
Sep 16 Python
python微信撤回监测代码
Apr 29 Python
python Pillow图像处理方法汇总
Oct 16 Python
Python 实现try重新执行
Dec 21 Python
Python reversed函数及使用方法解析
Mar 17 Python
opencv 图像腐蚀和图像膨胀的实现
Jul 07 Python
浅谈pytorch中的dropout的概率p
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
php获取301跳转URL简单实例
2013/12/16 PHP
PHP图片处理之使用imagecopyresampled函数裁剪图片例子
2014/11/19 PHP
yii实现图片上传及缩略图生成的方法
2014/12/04 PHP
PHP简单选择排序算法实例
2015/01/26 PHP
slice函数的用法 之不错的应用
2006/12/29 Javascript
excel操作之Add Data to a Spreadsheet Cell
2007/06/12 Javascript
Prototype 学习 工具函数学习($方法)
2009/07/12 Javascript
juqery 学习之三 选择器 可见性 元素属性
2010/11/25 Javascript
仿jQuery的siblings效果的js代码
2011/08/09 Javascript
实用又漂亮的BootstrapValidator表单验证插件
2016/05/30 Javascript
JS当前页面登录注册框,固定DIV,底层阴影的实例代码
2016/09/29 Javascript
JavaScript递归操作实例浅析
2016/10/31 Javascript
JavaScript仿微博输入框效果(案例分析)
2016/12/06 Javascript
BootStrap中Table隐藏后显示问题的实现代码
2017/08/31 Javascript
vue中实现移动端的scroll滚动方法
2018/03/03 Javascript
Angularjs之ngModel中的值验证绑定方法
2018/09/13 Javascript
微信小程序常用简易小函数总结
2019/02/01 Javascript
微信小程序模板消息限制实现无限制主动推送的示例代码
2019/08/27 Javascript
Node.js控制台彩色输出的方法与原理实例详解
2019/12/01 Javascript
javascript设计模式 ? 访问者模式原理与用法实例分析
2020/04/26 Javascript
Vue 组件的挂载与父子组件的传值实例
2020/09/02 Javascript
[00:50]2014DOTA2国际邀请赛 NEWBEE战队回顾
2014/08/01 DOTA
python实现根据图标提取分类应用程序实例
2014/09/28 Python
Python中获取网页状态码的两个方法
2014/11/03 Python
在Python中使用判断语句和循环的教程
2015/04/25 Python
使用批处理脚本自动生成并上传NuGet包(操作方法)
2019/11/19 Python
Python input函数使用实例解析
2019/11/22 Python
Python利用PyExecJS库执行JS函数的案例分析
2019/12/18 Python
Python Dataframe常见索引方式详解
2020/05/27 Python
解决python运行效率不高的问题
2020/07/20 Python
Python getsizeof()和getsize()区分详解
2020/11/20 Python
美国娱乐和流行文化商品店:FYE
2017/09/14 全球购物
会计专业自荐信范文
2013/12/02 职场文书
车辆安全检查制度
2014/01/12 职场文书
南京青奥会口号
2014/06/12 职场文书
2015年爱国卫生工作总结
2015/04/22 职场文书