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读取Android permission文件
Nov 01 Python
Python 中pandas.read_excel详细介绍
Jun 23 Python
Python数据结构与算法之图的广度优先与深度优先搜索算法示例
Dec 14 Python
Python打印“菱形”星号代码方法
Feb 05 Python
解决tensorflow模型参数保存和加载的问题
Jul 26 Python
python利用多种方式来统计词频(单词个数)
May 27 Python
在Pytorch中使用样本权重(sample_weight)的正确方法
Aug 17 Python
Python MongoDB 插入数据时已存在则不执行,不存在则插入的解决方法
Sep 24 Python
Python3.5 win10环境下导入kera/tensorflow报错的解决方法
Dec 19 Python
tensorflow tf.train.batch之数据批量读取方式
Jan 20 Python
使用Python爬虫库requests发送请求、传递URL参数、定制headers
Jan 25 Python
基于Python的身份证验证识别和数据处理详解
Nov 14 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 超链接 抓取实现代码
2009/06/29 PHP
php 取得瑞年与平年的天数的代码
2009/08/10 PHP
php学习之变量的使用
2011/05/29 PHP
PHP FOR MYSQL 代码生成助手(根据Mysql里的字段自动生成类文件的)
2011/07/23 PHP
php文件怎么打开 如何执行php文件
2011/12/21 PHP
PHP连接SQLServer2005的实现方法(附ntwdblib.dll下载)
2012/07/02 PHP
PHP APC缓存配置、使用详解
2014/03/06 PHP
[原创]解决wincache不支持64位PHP5.5/5.6的问题(提供64位wincache下载)
2016/06/22 PHP
php实现支持中文的文件下载功能示例
2017/08/30 PHP
使用Grunt.js管理你项目的应用说明
2013/04/24 Javascript
jquery预览图片实现鼠标放上去显示实际大小
2014/01/16 Javascript
js调试系列 初识控制台
2014/06/18 Javascript
JS限制文本框只能输入数字和字母方法
2015/02/28 Javascript
纯js和css完成贪吃蛇小游戏demo
2016/09/01 Javascript
jQuery动态修改字体大小的方法【测试可用】
2016/09/09 Javascript
jQuery与js实现颜色渐变的方法
2016/12/30 Javascript
Vue组件开发之LeanCloud带图形校验码的短信发送功能
2017/11/07 Javascript
Angular4学习笔记router的简单使用
2018/03/30 Javascript
python使用正则表达式匹配字符串开头并打印示例
2017/01/11 Python
Python实现图片转字符画的示例
2017/08/22 Python
简单谈谈python基本数据类型
2018/09/26 Python
python 中xpath爬虫实例详解
2019/08/26 Python
Softmax函数原理及Python实现过程解析
2020/05/22 Python
Django怎么在admin后台注册数据库表
2020/11/14 Python
你正在寻找的CSS3 动画技术
2011/07/27 HTML / CSS
英国时尚优质的女装:Hope Fashion
2018/08/14 全球购物
英国历史最悠久的DJ设备供应商:DJ Finance、DJ Warehouse、The DJ Shop
2019/09/04 全球购物
澳大利亚在线高跟鞋商店:Shoe Me
2019/11/19 全球购物
德国高尔夫商店:Par71.de
2020/11/29 全球购物
ASICS印度官方网站:日本专业运动品牌
2020/06/20 全球购物
化工专业大学生职业生涯规划书
2014/01/14 职场文书
校庆接待方案
2014/03/18 职场文书
网络工程师自荐书范文
2014/04/01 职场文书
我的兄弟姐妹观后感
2015/06/15 职场文书
学历证明范文
2015/06/16 职场文书
话题作文之自信作文
2019/11/15 职场文书