python binascii 二进制转换

95 篇文章 1 订阅

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

如类似下面的数据转换

# [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 异常
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值