如何打印十六进制值?

时间:2015-01-15 20:20:10

标签: python

以下代码:

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并只打印它?

2 个答案:

答案 0 :(得分:1)

您可以使用

print( repr(response['parameter'])[1:-1] )

答案 1 :(得分:1)

我认为你把自己弄糊涂了。实际问题是“如何从字节字符串中提取字节的数值”,答案只是ord()。注意虽然ord()只占用一个字节,即一个长度为1的字节串,但我不确定这是否有保证。此外,在Python 2中,字符串默认是字节字符串,而在Python 3中,它需要一个明确的'b'前缀。

现在,回到十六进制值,重点是没有涉及十六进制,除非将响应写入控制台(在那里使用repr()函数)或在代码中写入时!另一个重要的事情是没有“十六进制值”这样的东西,有一个数值,并且使用十六进制格式表示该值。这就是0x11 == 0b10001 == 17的原因,因为这些是价值比较,不同的数字基础只是写出相同值的不同方式。

相关问题