一、转16进制
方法1:
列表数据转16进制字符串
import struct a=[0xAA,0x01,0x17,0x00,0x60,0x0A,0x00,0x0A,0x00,0xD0,0x11,0x02,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1E] data_hex=struct.pack("%dB"%(len(a)),*a) print data_hex
#'xaax01x17x00` x00 x00xd0x11x02x01x00x00x00x00x00x00x00x00x00x1e'
用法:data_hex这种形式的数据可以当成16进制来发送(socket,serial等等)
方法2:
字符串转16进制字符串
>>> from binascii import * >>> b2a_hex('aaaaaaa') '61616161616161' >>> b2a_hex('aaaaaaa').encode('utf-8') '61616161616161'
用法:在socket中若收到的数据是16进制的含义的,但接收的时候是字符串形式,可以将其转成16进制字符串形式,易于显示
方法3:
字符串转成字面相等的16进制字符串
>>> from binascii import * >>> a2b_hex('A1A1A1') 'xa1xa1xa1'
用法:同方法1一样
列表在使用append的时候,若添加的数据无法识别成字符串,则以16进制字符串保存起来
socket server data:open ['open'] tohex:6f70656e ['6f70656e'] data:open ['open', 'open'] tohex:6f70656e ['6f70656e', '6f70656e'] data:open', 'open', 'xaaxaaxaaxaaxaa'] tohex:aaaaaaaaaa ['6f70656e', '6f70656e', 'aaaaaaaaaa']
此时的列表里的16进制也可当成16进制发送出去,同方法1