最佳答案
这在python中有点棘手,因为不希望将浮点值转换为(十六进制)整数.相反,您尝试将浮点值的IEEE 754二进制表示解释为十六进制.
我们将使用内置struct
库中的pack和unpack函数.
浮点数是32位.我们首先将它打包成binary1字符串,然后将其解压缩为int.
def float_to_hex(f):
return hex(struct.unpack('<I', struct.pack('<f', f))[0])
float_to_hex(17.5) # Output: '0x418c0000'
我们可以做同样的双倍,知道它是64位:
def double_to_hex(f):
return hex(struct.unpack('<Q', struct.pack('<d', f))[0])
double_to_hex(17.5) # Output: '0x4031800000000000L'
1 – 表示一串原始字节;不是一串零和一零.