在进行串口测试的时候,发送与接收的数据都是以二进制形式进行发送,需要把发送的数据转换成二进制类型
如类似下面的数据转换
# [0x68, 0xF1, 0x16, 0x25] => "68F11625"
def int_list_to_hexstr_without_space(int_list):
result = ""
for int in int_list:
result += "%02X" % (int)
return result.strip()
# "68F11625" => [0x68, 0xF1, 0x16, 0x25]
def hexstr_to_int_list_2(arg):
result = []
hLen = int(len(arg) / 2)
for i in range(hLen):
val = int(arg[i*2:i*2+2], 16)
result.append(val)
return result
对于这种转换直接使用 binascii
库进行准换即可
import binascii
arr = [0xaa, 0xbb, 0x12, 0x13, 0x14]
print(bytearray(arr))
# bytearray(b'\xaa\xbb\x12\x13\x14')
print(binascii.hexlify(bytearray(arr)))
# b'aabb121314'
print(binascii.unhexlify(b'aabb121314'))
# b'\xaa\xbb\x12\x13\x14'
r = binascii.hexlify(bytearray(arr))
print(r)
# b'aabb121314
binascii.b2a_hex(data) 或 binascii.hexlify(data)
- 返回二进制数据 data 的十六进制表示形式。 data 的每个字节都被转换为相应的2位十六进制表示形式。因此返回的字节对象的长度是 data 的两倍。
binascii.a2b_hex(hexstr) 或 binascii.unhexlify(hexstr)
- 返回由十六进制字符串 hexstr 表示的二进制数据。此函数功能与 b2a_hex() 相反。 hexstr 必须包含偶数个十六进制数字(可以是大写或小写),否则会引发 Error 异常