从这条评论来看:
请您提供一个
它的使用示例?我在尝试着
通过使用将此 0.554 转换为十六进制
float.hex(值)?我该怎么写
它为 (\x30\x30\x35\x35)? – 约旦2010
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