• 问题描述

最近做一个项目,是用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)相关推荐

  1. python字节流分割_Python 字节流,字符串,十六进制相互转换实例(binascii,bytes)

    问题描述 最近做一个项目,是用Python进行相关的串口操作.及将相关指令通过串口发给设备,设备根据发过来的指令来做出相应的操作,所用的库是Pyserial.在最初开发时,出现的问题在于:别人给的文档 ...

  2. python字节流处理_Python 字节流,字符串,十六进制相互转换实例(binascii,bytes)

    问题描述 最近做一个项目,是用Python进行相关的串口操作.及将相关指令通过串口发给设备,设备根据发过来的指令来做出相应的操作,所用的库是Pyserial.在最初开发时,出现的问题在于:别人给的文档 ...

  3. python字节流字符串转换

    python字节流bytes转换字符串str import requests # # 发起请求获得响应 <Response [200]> res = requests.get('https ...

  4. Python十进制和十六进制相互转换

    十进制转换成十六进制(不去掉前面的0x) val = 30 val = hex(val) print(val)运行结果:0x1e 十进制转换成十六进制(去掉前面的0x) val = 30 val = ...

  5. Python: 二进制字节流数据的读取操作 -- bytes 与 bitstring

    Python: 二进制字节流数据的读取操作 – bytes 与 bitstring 最近项目有个需求,需要对二进制文件读取内容,操作读取到的字节流数据,主要是查找与切片获取内容.这要求有两个标志,一个 ...

  6. python3字符编码str_聊聊Python 3 的字符串:str 和 bytes 的区别

    Python2的字符串有两种:str 和 unicode,Python3的字符串也有两种:str 和 bytes.Python2 的 str 相当于 Python3 的bytes,而unicode相当 ...

  7. 四位二进制、十进制、四位十六进制相互转换(高位补零)python

    四位二进制.十进制.四位十六进制相互转换(高位补零) 四位二进制转十进制 十进制转四位二进制 十进制转十六进制 十进制转四位十六进制 四位十六进制转十进制 四位二进制转十进制 int(i, 2) 十进 ...

  8. Python学习,python3中的bytes和str类型

    Python 3最重要的新特性之一是对字符串和二进制数据流做了明确的区分.文本总是Unicode,由str类型表示,二进制数据则由bytes类型表示.Python 3不会以任意隐式的方式混用str和b ...

  9. python什么是字符串_什么是Python的字符串

    对于单个字符的编码,Python提供了ord()函数获取字符的整数表示,chr()函数把编码转换为对应的字符:>>> ord('A') 65 >>> ord('中' ...

  10. 你真的知道Python的字符串是什么吗?

    在<详解Python拼接字符串的七种方式>这篇推文里,我提到过,字符串是程序员离不开的事情.后来,我看到了一个英文版本的说法: There are few guarantees in li ...

最新文章

  1. vscode wecode的配置_使用体验神似VS Code?三步带你了解华为云CloudIDE前世今生
  2. 送100本书!涵盖Java 、大数据、推荐系统、机器学习、黑客、数据库、手游、少儿编程等!免费包邮!...
  3. 线上日志分析与其他一些脚本
  4. csharp:Convert Image to Base64 String and Base64 String to Image
  5. 行业软件之PTV微观软件VISSIM4.3 5.0 5.1 5.2 5.3 5.4下载和相关资料
  6. Struts1.x使用入门
  7. java获取docx_java使用poi读取doc和docx文件的实现示例
  8. 推荐几款牛逼Chrome网页翻译插件,功能强大内容惊艳,务必低调使用
  9. Spark性能优化之-数据倾斜
  10. Python地理位置信息库geopy的使用(一):基本使用
  11. 下载并安装 Node
  12. 海康威视网络摄像头购买指南(焦距像素等参数)
  13. LocalDateTime和时间戳互转
  14. python爬虫之必应图片
  15. 如何在macOS中创建访客帐户
  16. CJS,AMD,UMD和ESM
  17. Java小游戏——飞机大战
  18. OPTEE RPMB文件系统
  19. 推荐计算机科学类的经典书籍 (转)
  20. 吃鸡进游戏显示错误服务器繁忙,绝地求生游戏崩溃进不去怎么办 服务器炸了繁忙解决方法...

热门文章

  1. 超1500名人气主播齐聚武汉,斗鱼嘉年华盛大开幕
  2. 华为无线充电怎么用?技术背后的故事你了解多少?
  3. redis设置key的TTL
  4. 手写简单版vue,深入理解vue的响应式原理
  5. Docker 快速入门
  6. Rails Delayed job Tips
  7. 毒app能让国内鉴别市场更靠谱吗
  8. WD企业盘参数对照表
  9. 爬取知乎高赞情话,甜蜜过七夕
  10. 搞个这样的APP要多久?