Python 如何读取XBEE ZB数据

Python 如何读取XBEE ZB数据,python,hex,xbee,Python,Hex,Xbee,我有一个python脚本,它正在监听来自XBEE S2收音机的数据。数据似乎乱七八糟。它似乎不是十六进制或任何其他有意义的东西 output: {'source_addr_long': '\x00\x13\xa2\x00@\xae\x9c\xe6', 'rf_data': '0\r\n\x00', 'source_addr': '\xe8f', 'id': 'rx', 'options': 'A'} 以上是从所有发送无线电接收到的信息。当然,每个收音机都有一点不同,这表明每个传输都是特定于收

我有一个python脚本,它正在监听来自XBEE S2收音机的数据。数据似乎乱七八糟。它似乎不是十六进制或任何其他有意义的东西

output:  {'source_addr_long': '\x00\x13\xa2\x00@\xae\x9c\xe6', 'rf_data':
'0\r\n\x00', 'source_addr': '\xe8f', 'id': 'rx', 'options': 'A'}
以上是从所有发送无线电接收到的信息。当然,每个收音机都有一点不同,这表明每个传输都是特定于收音机的

当我打印“rf_数据”时,我得到了一个我应该得到的0,或者至少这是我在本例中所寻找的。但当我打印“source_addr”时,它既不是十六进制,也不是其他任何东西

首先,我想了解上述数据的含义。接下来,我想将源地址输出为有意义的内容。我已经尝试了.decode(“hex”),但得到的错误是这不是一个十六进制值


你认为呢?

rf\u data
是一个
0
,后跟回车、换行和空。发送方可能会错误计算数据的长度,因为您通常不会包含发送字符串的null终止符

源地址是8个字节,很好地解释了如何使用它:

>>> value = '\x13\xa2\x00@y\xe6_'

>>> pretty_value = ':'.join("{:02X}".format(ord(c)) for c in value)
>>> print(pretty_value)
13:A2:00:40:79:E6:5F