以下代码:
xbee.remote_at(dest_addr_long='\x00\x13\xA2\x00\x40\x0A\x21\x1C', command=mycommand, frame_id='\x01')
response = xbee.wait_read_frame()
print(response)
返回此回复:
{'status': '\x00', 'source_addr': '\x8b>', 'source_addr_long': '\x00\x13\xa2\x00@\n!\x1c', 'frame_id': '\x01', 'command': 'D0', 'parameter': '\x04', 'id': 'remote_at_response'}
从回复中我可以很容易地获得myid,我只需输入:
myid = response['id']
print myid
现在我想获取参数并将其存储为myparameter,但它是十六进制的
myparameter = response['parameter']
不起作用。
如何获取十六进制参数\x04
并只打印它?
答案 0 :(得分:1)
您可以使用
print( repr(response['parameter'])[1:-1] )
答案 1 :(得分:1)
我认为你把自己弄糊涂了。实际问题是“如何从字节字符串中提取字节的数值”,答案只是ord()
。注意虽然ord()
只占用一个字节,即一个长度为1的字节串,但我不确定这是否有保证。此外,在Python 2中,字符串默认是字节字符串,而在Python 3中,它需要一个明确的'b'前缀。
现在,回到十六进制值,重点是没有涉及十六进制,除非将响应写入控制台(在那里使用repr()
函数)或在代码中写入时!另一个重要的事情是没有“十六进制值”这样的东西,有一个数值,并且使用十六进制格式表示该值。这就是0x11 == 0b10001 == 17
的原因,因为这些是价值比较,不同的数字基础只是写出相同值的不同方式。