Судя этот комментарий:
могли бы вы, пожалуйста, чтобы дать пример его использования? Я пытаюсь сделать конвертировать это значение 0,554 в hex с помощью float.hex (value)? и как я могу написать это как (\ x30 \ x30 \ x35 \ x35)? - jordan2010 1 час назад
, что вы действительно хотите шестнадцатеричное представление ASCII кодов этих числовых символов, а не фактического поплавка, представленного в шестнадцатеричной.
"5" = 53 (основание 10) = 0x35 (основание 16)
Вы можете использовать Ord(), чтобы получить код ASCII для каждого символа, как это:
>>> [ ord(char) for char in "0.554" ]
[48, 46, 53, 53, 52]
Хотите ли вы читаемое человеком представление? шестигранный() даст вам один, но не в том же формате, что вы просили:
>>> [ hex(ord(char)) for char in "0.554" ]
['0x30', '0x2e', '0x35', '0x35', '0x34']
# 0 . 5 5 4
Вместо этого вы можете использовать строки подстановки и соответствующие форматтеры
res = "".join([ "\\x%02X" % ord(char) for char in "0.554" ])
>>> print res
\x30\x2E\x35\x35\x34
Но если вы хотите сериализовать данных, используйте модуль struct
, чтобы упаковать данные в буферы.
отредактирован ответить jordan2010 секонд комментарий
Вот быстрое добавление раздуть число с ведущими нулями.
>>> padded_integer_str = "%04d" % 5
>>> print padded_integer_str
0005
>>> res = "".join([ "\\x%02X" % ord(char) for char in padded_integer_str])
>>> print res
\x30\x30\x30\x35
См http://docs.python.org/library/stdtypes.html#string-formatting для объяснения на струнных форматтерах
Связанные: http://stackoverflow.com/questions/1592158/python-convert-hex-to-float – miku
Вы хотите двоичное представление IEEE float в hex, вы просто хотите, чтобы целая часть в шестнадцатеричном формате, или вы хотите, чтобы все это было в шестнадцатеричном формате? – Gabe
Привет, что вы используете для этого?Вы пытаетесь сохранить десятичную точность, если вы печатаете/читаете номер? Вы можете посмотреть на десятичную плавающую точку для этого, это намного более портативно, и вы не получите злобной толпы у ваших ворот с факелами и вилами. –