python binascii 二进制转换

在进行串口测试的时候,发送与接收的数据都是以二进制形式进行发送,需要把发送的数据转换成二进制类型

如类似下面的数据转换

# [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 异常

你可能感兴趣的:(工作,python,python)