Судя по этому комментарию:
не могли бы вы привести пример его использования? Я пытаюсь преобразовать этот 0,554 в шестнадцатеричный с помощью float.hex (значение)? и как я могу написать это как (\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() даст вам один, но он не в том формате, который вы просили:
>>> [ 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 для объяснения форматирования строк
person
Jeremy Brown
schedule
25.05.2010