Python 字节流、字符串、十六进制相互转换(binascii、bytes)
问题描述
最近做一个项目,是用Python进行相关的串口操作。及将相关指令通过串口发给设备,设备根据发过来的指令来做出相应的操作,所用的库是Pyserial。在最初开发时,出现的问题在于:别人给的文档里面的命令是十六进制的。例如,给出一个指令:
5aa5 07 82 1000 3132 3334 。 那么,我们需要思考的是,我们如何将上面的指令,转换为pyserial库进行写操作时(write)所需要的bytes类型。
解决方法
首先,我们需要知道的是,我们首先,需要用字符串构造成上面的指令,然后我们将它转换成bytes。我们可以使用encode()函数将字符串转为bytes格式:
然后我们就可以使用write对串口进行发数据了:
这里需要说明的是,我们发送的是字符串的1234,串口那边就根据ascii进行解析。所以就变成了 31 32 33 34。
接下来,再来更换一个场景,我们构造好了一个十六进制的bytes,需要将它还原成字符串:
解析串口发过来的数据,首先我们查看从串口发过来的数据格式:
可以看到,我们发送的指令,和收到的指令,看起来不一致,那么我们也就无法进行调试,也就无法查看发过来的指令是否有错误,所以,我们需要对接收到的指令进行转换。
可以看到,我们通过binascii中的函数,对发送过来的数据进行转换,转换成了我们能够看看懂的命令字符串。
接下来,我们如何将收到的命令,转换为文字?例如,我们收到了一串bytes,如果将它转换为明文?
如上图,我们将收到的bytes已经转换成了字符串格式,然后将里面的31 32 33 34提取出来,然后,我们将它们放入一个数组,经过上面的运算以后,我们就得到了明文数据。
如何将十六进制转换为字节流?
上述两个方法均可。
总结
由于对上述的知识点不是特别熟悉,所以表述可能有一定的混乱。当初想实现上述几点功能时也费了很大的劲,所以才写在这里供以后后续使用。后来者进行学习时,无需仔细看文字,只需要看图片,了解前后数据类型的转化成什么样,是否符合自己的需求即可。
Python 字节流、字符串、十六进制相互转换(binascii、bytes)相关推荐
- python字节流分割_Python 字节流,字符串,十六进制相互转换实例(binascii,bytes)
问题描述 最近做一个项目,是用Python进行相关的串口操作.及将相关指令通过串口发给设备,设备根据发过来的指令来做出相应的操作,所用的库是Pyserial.在最初开发时,出现的问题在于:别人给的文档 ...
- python字节流处理_Python 字节流,字符串,十六进制相互转换实例(binascii,bytes)
问题描述 最近做一个项目,是用Python进行相关的串口操作.及将相关指令通过串口发给设备,设备根据发过来的指令来做出相应的操作,所用的库是Pyserial.在最初开发时,出现的问题在于:别人给的文档 ...
- python字节流字符串转换
python字节流bytes转换字符串str import requests # # 发起请求获得响应 <Response [200]> res = requests.get('https ...
- Python十进制和十六进制相互转换
十进制转换成十六进制(不去掉前面的0x) val = 30 val = hex(val) print(val)运行结果:0x1e 十进制转换成十六进制(去掉前面的0x) val = 30 val = ...
- Python: 二进制字节流数据的读取操作 -- bytes 与 bitstring
Python: 二进制字节流数据的读取操作 – bytes 与 bitstring 最近项目有个需求,需要对二进制文件读取内容,操作读取到的字节流数据,主要是查找与切片获取内容.这要求有两个标志,一个 ...
- python3字符编码str_聊聊Python 3 的字符串:str 和 bytes 的区别
Python2的字符串有两种:str 和 unicode,Python3的字符串也有两种:str 和 bytes.Python2 的 str 相当于 Python3 的bytes,而unicode相当 ...
- 四位二进制、十进制、四位十六进制相互转换(高位补零)python
四位二进制.十进制.四位十六进制相互转换(高位补零) 四位二进制转十进制 十进制转四位二进制 十进制转十六进制 十进制转四位十六进制 四位十六进制转十进制 四位二进制转十进制 int(i, 2) 十进 ...
- Python学习,python3中的bytes和str类型
Python 3最重要的新特性之一是对字符串和二进制数据流做了明确的区分.文本总是Unicode,由str类型表示,二进制数据则由bytes类型表示.Python 3不会以任意隐式的方式混用str和b ...
- python什么是字符串_什么是Python的字符串
对于单个字符的编码,Python提供了ord()函数获取字符的整数表示,chr()函数把编码转换为对应的字符:>>> ord('A') 65 >>> ord('中' ...
- 你真的知道Python的字符串是什么吗?
在<详解Python拼接字符串的七种方式>这篇推文里,我提到过,字符串是程序员离不开的事情.后来,我看到了一个英文版本的说法: There are few guarantees in li ...
最新文章
- vscode wecode的配置_使用体验神似VS Code?三步带你了解华为云CloudIDE前世今生
- 送100本书!涵盖Java 、大数据、推荐系统、机器学习、黑客、数据库、手游、少儿编程等!免费包邮!...
- 线上日志分析与其他一些脚本
- csharp:Convert Image to Base64 String and Base64 String to Image
- 行业软件之PTV微观软件VISSIM4.3 5.0 5.1 5.2 5.3 5.4下载和相关资料
- Struts1.x使用入门
- java获取docx_java使用poi读取doc和docx文件的实现示例
- 推荐几款牛逼Chrome网页翻译插件,功能强大内容惊艳,务必低调使用
- Spark性能优化之-数据倾斜
- Python地理位置信息库geopy的使用(一):基本使用
- 下载并安装 Node
- 海康威视网络摄像头购买指南(焦距像素等参数)
- LocalDateTime和时间戳互转
- python爬虫之必应图片
- 如何在macOS中创建访客帐户
- CJS,AMD,UMD和ESM
- Java小游戏——飞机大战
- OPTEE RPMB文件系统
- 推荐计算机科学类的经典书籍 (转)
- 吃鸡进游戏显示错误服务器繁忙,绝地求生游戏崩溃进不去怎么办 服务器炸了繁忙解决方法...