Python输出16进制不带0x补零,整数转16进制,字符串转16进制

在开发中,我们偶尔会遇到需要将数据通过控制台打印出来,以检查数据传输的准确性。例如调试服务端刚接到的二进制数据(里面包含很多非可见字符,也就是ASCii码之外的字节值,或是字节值不是字母和数字的,是一些特殊符号),如物联网的MQTT协议的信息,以及我们自定义的二进制应用协议,而不是基于可见字符或JSON组装的信息流。但我们希望看到的是类似这样的信息“0A 53 49 B7 FC 2E”。

这些二进制数据如果直接用print()函数打印,则在控制台看到的是以字节值代表的字符形式,看到的很多就是乱码。如果用Python里的hex()函数转一下再依次输出,会在每个前面都带有“0x”字符,并且01会打印成1,看起来就很不整齐,感觉比较乱,并且打印的时候要人为在每个字节后面加入空格才能分开字节。

经过实践,我们可以通过格式化输出将字节值变成16进制字符后,再用join()函数输出,就可以实现我们要的效果了,想打印字符串的ASCii值也可以,只不过先用ord()函数转一下,下面是我封装的两个函数,分别对应字节类型和字符串类型的输出,调试通过,仅供参考。

打印字节类型的:

# 字节列表以16进制格式打印数据

def print_bytes_hex(data):

lin = ['%02X' % i for i in data]

print(" ".join(lin))

# 测试字节列表,这也是网络传输收到的原始类型

arr = [0x4B, 0x43, 0x09, 0xA1, 0x01, 0x02, 0xAB, 0x4A, 0x43]

print_bytes_hex(arr)

'''

控制台输出:

4B 43 09 A1 01 02 AB 4A 43

'''

打印字符串类型的:

# 字符串或字符列表以16进制格式打印数据

def print_string_hex(data):

lin = ['%02X' % ord(i) for i in data]

print(" ".join(lin))

# 测试字符串类型

arr = 'Work'

print_string_hex(arr)

'''

控制台输出:

57 6F 72 6B

'''

如果我们是开发物联网的项目,涉及到信令需要与硬件开发人员交流的时候,硬件那边基本都是以16进制描述的,所以在服务端输出格式统一的数据流格式,方便大家交流。

上面的实现也可以用循环打印(在打印的时候格式化和加空格)实现,但是写起来略显臃肿,但是不用生成新的列表,对瞬间内存占用有利(抱歉,写硬件代码留下的习惯,总是会想到内存占用,因为单片机的资源实在有限)大家可以根据这个自己改进。

python hex 补零_Python输出16进制不带0x补零,整数转16进制,字符串转16进制相关推荐

  1. python 16进制补零_Python输出16进制不带0x补零,整数转16进制,字符串转16进制

    python输出16进制不带0x补零,整数转16进制,字符串转16进制 在开发中,我们偶尔会遇到需要将数据通过控制台打印出来,以检查数据传输的准确性.例如调试服务端刚接到的二进制数据(里面包含很多非可 ...

  2. Python输出16进制不带0x补零,整数转16进制,字符串转16进制

    Python输出16进制不带0x补零,整数转16进制,字符串转16进制   在开发中,我们偶尔会遇到需要将数据通过控制台打印出来,以检查数据传输的准确性.例如调试服务端刚接到的二进制数据(里面包含很多 ...

  3. python 补前导零_Python正则表达式| 程序从IP地址中删除前导零

    python 补前导零 Given an IP address as input, write a Python program to remove leading zeros from it. 给定 ...

  4. python找零钱问题_Python基于回溯法子集树模板解决找零问题示例

    本文实例讲述了Python基于回溯法子集树模板解决找零问题.分享给大家供大家参考,具体如下: 问题 有面额10元.5元.2元.1元的硬币,数量分别为3个.5个.7个.12个.现在需要给顾客找零16元, ...

  5. python中求合数_python输出100以内的质数与合数实例代码

    具体代码如下所述: __author__ = 'Yue Qingxuan' # -*- coding: utf-8 -*- #求质数 p=[2] for i in range(2,101): for ...

  6. python求1000素数_python输出1到1000以内的所有素数

    python输出1到1000以内的所有素数 发布时间:2020-05-19 10:09:10 来源:亿速云 阅读:322 作者:Leah 这篇文章主要为大家详细介绍了python输出1到1000以内的 ...

  7. python安装文件乱码_python输出到文件乱码如何解决

    python代码文件的编码 py文件默认是ASCII编码,中文在显示时会做一个ASCII到系统默认编码的转换,这时就会出错:SyntaxError: Non-ASCII character.需要在代码 ...

  8. python代码命令行tab补齐_Python在命令行下Tab键自动补全脚本

    摘要 由于写shell命令习惯了Tab补全,其实我个人认为这不是应该有的一个恶习,基础开始我们不应该想着Tab去自动补全,我们应该趁这时候来多多记忆基础的东西.唉,恶习难改...... 老实说我也是网 ...

  9. python打印国际象棋棋盘_python输出国际象棋棋盘的实例分享

    国际象棋是当今国际上最流行的智力体育运动项目.青年人下棋可以锻炼思维.增强记忆力和培养坚强的意志:中年人下棋可以享受美学:老年下棋可以很好的休息娱乐.国际象棋游戏有自己的规则,需要两个人将棋子落在棋盘 ...

最新文章

  1. Python的优点?
  2. 华为天才少年稚晖君自制硬萌机器人,GitHub收获 1.5K Star!
  3. tcp/ip 协议栈Linux内核源码分析14 udp套接字接收流程一
  4. python使用UUID生成唯一标识
  5. Android开发笔记(九十九)圆形转盘
  6. android和webview交互,android webview与原生交互
  7. delaunay三角网构建
  8. 人工智能 一种现代方法 第8章 一阶逻辑
  9. opencms9.0安装
  10. 微型计算机控制系统的硬件组成
  11. dorado关于下拉框的的onSelect()方法
  12. nginx 漏洞修复
  13. 【全国大学生IoT设计竞赛】安谋科技灵动赛题国赛一等奖分享:多足仿生机器人
  14. 【FFMPEG】解决截取MP4视频的中间段时,截取完成后前几帧视频卡住,但是有声音的情况
  15. 云课堂软件工程(C编码实践篇)学习之我见
  16. 算法入门1:基本概念
  17. Cesium结合高德SDK路径规划
  18. java新特性-函数式接口-作为方法参数-作为方法的返回值-常用函数式接口-Supplier-Consumer-Predicate-Function
  19. 基于HVS 的结构相似性的视频质量评价
  20. 【财富空间】大润发创始人挥泪离场:我战胜了所有对手,却输给了时代!

热门文章

  1. redmine docker部署
  2. python停车场_Python练习:简单停车场(栈)
  3. Centos7.3防火墙配置
  4. java中poi导入excel_java中使用poi实现导入Excel
  5. 什么叫内部银团_隔热膜的工作原理是什么呢,赛瑞思SPRINGSUN带你了解
  6. linux搭建unturned服务器,【图片】【超详细UNTURNED最新开服教程】(包括权限组,服务器细节设置)【unturned吧】_百度贴吧...
  7. Bug记录:Idea启动异常
  8. 城市智慧泊车整体解决方案
  9. 苹果iPhone14系列或不再有iPhone mini?
  10. flutter 项目实战二 网络请求