试图从Lowe的Iris SmartSwitch解码Zigbee协议。我正在使用的API回调接收已经解析的帧,并作为(我相信)字典对象(?)发送到回调。我的代码:
def callback(data):
print data
打印以下内容:
{'profile': '\xc2\x16', 'source_addr': '\x93\x0c', 'dest_endpoint':
'\x02', 'rf_data': '\t\x00\x81\x00\x00', 'source_endpoint': '\x02',
'options': '\x01', 'source_addr_long': '\x00\ro\x00\x03\xbc\xdf\xab',
'cluster': '\x00\xef', 'id': 'rx_explicit'}
我认为这是字节顺序的,我更喜欢这样的输出:
C2 16 93 0C 02 09 00 81 00 00 02 01 00 ...
有任何使用给定的“数据”参数的Python内置插件来执行此操作的方法吗?另外,我不知道如何将“ \ ro”解释为8位十六进制。我假设“ \ t”为0x09。
我真正想要的是数据帧的原始转储,但是我不知道是否有对此的API调用。
最佳答案
有任何使用给定的“数据”参数的Python内置插件来执行此操作的方法吗?
否。字典是按任意顺序排列的,因此无法知道值应按什么顺序排列。
另外,我不知道如何将“ \ ro”解释为8位十六进制。
它是“ \ r”和“ o”,即0x0d 0x6f。
我假设“ \ t”为0x09。
>>> hex(ord('\t'))
'0x9'
我真正想要的是数据帧的原始转储,但是我不知道是否有对此的API调用。
我们不知道,因为您最初没有共享要使用的API。
关于python - python :打印十六进制数据,而不是字典,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/30083004/