美文网首页
Python Hex与Bytes间的转换

Python Hex与Bytes间的转换

作者: welder77 | 来源:发表于2022-04-15 21:49 被阅读0次

在CAN、LIN、Ethernet等车载总线上,数据通常是以Bytes类型进行传输的。

所以在测试过程中从Bytes转为Hex格式的string,以及反向的转换就变得十分常用。

我们以一条诊断测试的Case为例:

  1. Case内容如下:
    Step: 0x773 22 F1 87
    Expect: 0x7FF 62 F1 87 31 32 33 34 35 36

  2. 测试工具实际的转换步骤如下:
    (1)测试工具读取字符串22 F1 87,并将其转为Bytes类型。
    (2)测试工具将转换后的Bytes数据通过ID: 0x773,赋值给总线工具的发送接口。
    (3)总线工具将其发送到车载总线上,等待被测节点ID: 0x7FF的应答。
    (4)被测节点,回复Bytes类型的62 F1 87 31 32 33 34 35 36到总线上。
    (5)测试工具接收后,将其再转为String类型,并与Case字符串做比对,并产生判断结果。

  3. 过程中使用了如下函数。
    (1)以上步骤1中,需要使用到一个库名为binascii,此库主要用于二进制与ASCII码之间进行装换。其中的a2b_hex子函数的作用,是将HEX类型的字符串,直接转为Bytes类型。

import binascii 
s = '22F187'
b = binascii.a2b_hex(s)    # 字符被转为了Bytes  '22F187'->b'\x22\xF1\x87'

(2)步骤4中,我们用到了Bytes到Hex(String)的转换。这里我们用到了bytes内置方法.hex()。

s = '62F187313233343536' 
b = binascii.a2b_hex(s)   #通过a2b_hex模拟产生一个bytes类型的62F187313233343536
s = b.hex().upper() #将此bytes数据转为了string类型,这里转换后字符默认是小写字符,所以转为大写。
print(s)

相关文章

网友评论

      本文标题:Python Hex与Bytes间的转换

      本文链接:https://www.haomeiwen.com/subject/umwqertx.html