python 将字节格式化为十六进制字符串

ulydmbyx  于 2023-06-20  发布在  Python
关注(0)|答案(2)|浏览(118)

我有RFID阅读器。物理接口与RS - 232规范兼容。1个起始位,8个数据位,1个停止位,无奇偶校验。下面是我用来运行阅读器和阅读超高频RFID标签的代码

import serial

ser = serial.Serial(port='COM8', baudrate=115200, timeout=0.01)
ba_antenna_set_1 = b'\xA0\x04\x01\x74\x00\xE7'
ba_antenna_set_2 = b'\xA0\x04\x01\x74\x10\xD7'
ba_inventory =  b'\xA0\x04\x01\x89\x01\xD1' 
ser.write(ba_antenna_set_1);
ser.write(ba_antenna_set_2);
while True:
    ser.write(ba_inventory);
    if ser.in_waiting > 0:    
        data = ser.readline()
        print(data)

当我运行这段代码时,我得到这样的输出:
b'\xa0\x04\x01t\x10\xd7'b'\xa0\x13\x01\x89t0\x000\x083\xb2\xdd\xd9\x01@\x00\x00\x00M\xbe' b'\xa0\n'b'\x01\x89\x00\x00\x10\x00\x00\x01\xbb' b'\xa0\x13\x01\x89\x040\x00\x00\x083\xb2\xdd\xd9\x01@\x00\x00\x00\x00N
我希望我的输出如下,我需要这方面的帮助
'A0 04 01 74 00 E7' 'A0 04 01 74 10 D7' 'A0 04 01 89 01 D1' 'A0 13 01 89 24 30 00 30 08 33 B2 DD D9 01 40 00 00 00 00 50 0B' 'A0 0A 01 89 00 00 11 00 00 00 01 BA'

eeq64g8w

eeq64g8w1#

data=ser.readline()返回一个bytes数组,因此您希望将其转换为十六进制字符串。有一个内置的方法,.hex(),它返回一个十六进制字符串,默认情况下没有空格,但你可以指定一个空格,你可以使用.upper()将a-f字符转换为大写。

datastring = data.hex(' ').upper()
print(datastring)
y1aodyip

y1aodyip2#

试试这个:

data = ser.readline().decode('utf-8')

相关问题