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

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

这些二进制数据如果直接用print()函数打印,则在控制台看到的是python基础教程以字节值代表的字符形式,看到的很多就是乱码。如果用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)'

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值