python转换成16进制,在python里,什么的作用是将整数x转换成十六进制
在开发过程中,可能需要从控制台打印数据,以检查数据传输的准确性。比如调试服务器刚接收到的二进制数据(其中包含更多的不可见字符,即ASCii码以外的字节值,或者字节值是特殊符号而不是字符或数字),物联网的MQTT协议信息,可见字符或者JSON。然而,我们想看到的是这样的信息“0A 53 49 B7 2E足球俱乐部”。
如果直接用print()函数打印这些二进制数据,控制台会显示python基础教程中字节值表示的字符形状,导致出现大量乱码。Python的Hex))函数进行旋转,然后依次输出,每一个前面都有单词“0x”。另外,01被印成1,看起来又乱又乱。此外,在打印时,必须在每个字节后添加一个空格来分隔字节。
在实践中,把输出格式化,把字节值做成十六进制字符,然后用join(函数输出,就可以得到想要的效果。如果你想打印字符串的ASCii值,你也可以。但是,请先用ord)函数回答。下面是我封装的两个函数,分别对应字节型和字符串型的输出。调试通过。仅供参考。
Type #字节列表打印数据defprint_bytes_hex(data):
lin=[X % i for i in data]
打印(。join) (Lin))测试字节列表,也是网络传输中收到的原始类型arr=[0x4B,0x 43,0x 09,0x a1,0x 01,0 x02,0x ab,0x4a]。
print_bytes_hex(ARR)
控制台输出:
4A 43
""
以十六进制格式打印数据,用于打印字符串类型# string或字符列表defprint_string_hex(data):
Lin=[x%ord(I ) for i in data]
打印(。join(Lin))测试字符串类型arr=workprint_string_hex())。
控制台输出:
57 6F 72 6B
""
当我们在开发物联网的项目中需要与信令相关的硬件开发者交流时,硬件端基本采用十六进制描述,服务器端的输出格式是统一的数据流格式,方便大家交流。
上面的实现也可以通过循环打印来实现(打印时增加格式和空间),但是写起来会稍微大一点。但由于不需要生成新的列表,有利于即时内存占用。不好意思,写硬件代码的习惯总是考虑内存占用。单片机的资源确实有限,大家可以在这个基础上提高。
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。