我正在尝试将浮点数从十进制转换为十六进制。 但我没有达到我想要的格式。 例如,如果十进制数是
54.75
,我想要格式为 36.C0
的十六进制数
但是,我无法将其转换为这种格式。
float.hex(54.75)
给予
0x1.b600000000000p+5
Python内置函数
hex()
也不支持浮点数。
如评论中所述,您可以将数字拆分为各个部分,然后合并转换后的结果。例如:
import math
import re
def get_hex(n):
assert not math.isinf(n)
assert not math.isnan(n)
for sign, a, b in re.findall(r"(-?)(\d+)\.?(\d*)", str(n)):
if b:
return f"{sign}{int(a):X}.{int(b):X}"
else:
return f"{sign}{int(a):X}"
print(get_hex(54.75))
print(get_hex(15))
print(get_hex(-15))
print(get_hex(-15.21))
print(get_hex(100_000_000_000.15))
打印:
36.4B
F
-F
-F.15
174876E800.F