python hex 补零_Python输出16进制不带0x补零,整数转16进制,字符串转16进制
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进制相关推荐
- python 16进制补零_Python输出16进制不带0x补零,整数转16进制,字符串转16进制
python输出16进制不带0x补零,整数转16进制,字符串转16进制 在开发中,我们偶尔会遇到需要将数据通过控制台打印出来,以检查数据传输的准确性.例如调试服务端刚接到的二进制数据(里面包含很多非可 ...
- Python输出16进制不带0x补零,整数转16进制,字符串转16进制
Python输出16进制不带0x补零,整数转16进制,字符串转16进制 在开发中,我们偶尔会遇到需要将数据通过控制台打印出来,以检查数据传输的准确性.例如调试服务端刚接到的二进制数据(里面包含很多 ...
- python 补前导零_Python正则表达式| 程序从IP地址中删除前导零
python 补前导零 Given an IP address as input, write a Python program to remove leading zeros from it. 给定 ...
- python找零钱问题_Python基于回溯法子集树模板解决找零问题示例
本文实例讲述了Python基于回溯法子集树模板解决找零问题.分享给大家供大家参考,具体如下: 问题 有面额10元.5元.2元.1元的硬币,数量分别为3个.5个.7个.12个.现在需要给顾客找零16元, ...
- python中求合数_python输出100以内的质数与合数实例代码
具体代码如下所述: __author__ = 'Yue Qingxuan' # -*- coding: utf-8 -*- #求质数 p=[2] for i in range(2,101): for ...
- python求1000素数_python输出1到1000以内的所有素数
python输出1到1000以内的所有素数 发布时间:2020-05-19 10:09:10 来源:亿速云 阅读:322 作者:Leah 这篇文章主要为大家详细介绍了python输出1到1000以内的 ...
- python安装文件乱码_python输出到文件乱码如何解决
python代码文件的编码 py文件默认是ASCII编码,中文在显示时会做一个ASCII到系统默认编码的转换,这时就会出错:SyntaxError: Non-ASCII character.需要在代码 ...
- python代码命令行tab补齐_Python在命令行下Tab键自动补全脚本
摘要 由于写shell命令习惯了Tab补全,其实我个人认为这不是应该有的一个恶习,基础开始我们不应该想着Tab去自动补全,我们应该趁这时候来多多记忆基础的东西.唉,恶习难改...... 老实说我也是网 ...
- python打印国际象棋棋盘_python输出国际象棋棋盘的实例分享
国际象棋是当今国际上最流行的智力体育运动项目.青年人下棋可以锻炼思维.增强记忆力和培养坚强的意志:中年人下棋可以享受美学:老年下棋可以很好的休息娱乐.国际象棋游戏有自己的规则,需要两个人将棋子落在棋盘 ...
最新文章
- Python的优点?
- 华为天才少年稚晖君自制硬萌机器人,GitHub收获 1.5K Star!
- tcp/ip 协议栈Linux内核源码分析14 udp套接字接收流程一
- python使用UUID生成唯一标识
- Android开发笔记(九十九)圆形转盘
- android和webview交互,android webview与原生交互
- delaunay三角网构建
- 人工智能 一种现代方法 第8章 一阶逻辑
- opencms9.0安装
- 微型计算机控制系统的硬件组成
- dorado关于下拉框的的onSelect()方法
- nginx 漏洞修复
- 【全国大学生IoT设计竞赛】安谋科技灵动赛题国赛一等奖分享:多足仿生机器人
- 【FFMPEG】解决截取MP4视频的中间段时,截取完成后前几帧视频卡住,但是有声音的情况
- 云课堂软件工程(C编码实践篇)学习之我见
- 算法入门1:基本概念
- Cesium结合高德SDK路径规划
- java新特性-函数式接口-作为方法参数-作为方法的返回值-常用函数式接口-Supplier-Consumer-Predicate-Function
- 基于HVS 的结构相似性的视频质量评价
- 【财富空间】大润发创始人挥泪离场:我战胜了所有对手,却输给了时代!
热门文章
- redmine docker部署
- python停车场_Python练习:简单停车场(栈)
- Centos7.3防火墙配置
- java中poi导入excel_java中使用poi实现导入Excel
- 什么叫内部银团_隔热膜的工作原理是什么呢,赛瑞思SPRINGSUN带你了解
- linux搭建unturned服务器,【图片】【超详细UNTURNED最新开服教程】(包括权限组,服务器细节设置)【unturned吧】_百度贴吧...
- Bug记录:Idea启动异常
- 城市智慧泊车整体解决方案
- 苹果iPhone14系列或不再有iPhone mini?
- flutter 项目实战二 网络请求