2015-01-15 5 views
1

следующий код:Как напечатать шестнадцатеричное значение?

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\[email protected]\n!\x1c', 'frame_id': '\x01', 'command': 'D0', 'parameter': '\x04', 'id': 'remote_at_response'} 

от ответа, я могу получить MyId довольно легко, просто введите:

myid = response['id'] 
print myid 

Теперь я хочу получите параметр и сохраните его как myparameter, но он равен hex, поэтому myparameter = response['parameter'] не работает.

Как я могу получить шестнадцатеричный параметр \x04 и просто распечатать его?

+1

Выполняет ли функция ['ord'] (https://docs.python.org/3/library/functions.html#ord) то, что вы хотите? – Rufflewind

+1

Каков ожидаемый результат? –

+0

ожидаемый результат: \ x04 или даже 04 –

ответ

1

Вы можете использовать

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

Я думаю, что вы путать себя с вашим вопросом. Фактический вопрос: «Как извлечь числовое значение байта из строки байта», для которого ответ просто ord(). Обратите внимание, что ord() принимает только один байт, то есть байтовую строку длиной один, что я не уверен, что это гарантировано. Кроме того, в Python 2 строки по умолчанию являются байтовыми строками, а в Python 3 для этого требуется явный префикс b.

Теперь, возвращаясь к шестнадцатеричному значению, дело в том, что в нем нет шестнадцатеричного элемента, за исключением случаев, когда либо написание ответа на консоль (там используется функция repr()), либо при написании кода в коде! Еще одна важная вещь заключается в том, что нет такой вещи, как «шестнадцатеричное значение», есть числовое значение, и есть представление этого значения с использованием шестнадцатеричного формата. Вот почему 0x11 == 0b10001 == 17, потому что это сравнение значений, а разные базы чисел - это просто разные способы записи одних и тех же значений.

Смежные вопросы