Python 中的十进制浮点数到十六进制

问题描述 投票:0回答:1

我正在尝试将浮点数从十进制转换为十六进制。 但我没有达到我想要的格式。 例如,如果十进制数是

54.75
,我想要格式为
36.C0
的十六进制数 但是,我无法将其转换为这种格式。

float.hex(54.75)

给予

0x1.b600000000000p+5

Python内置函数

hex()
也不支持浮点数。

python-3.x floating-point number-systems
1个回答
0
投票

如评论中所述,您可以将数字拆分为各个部分,然后合并转换后的结果。例如:

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
© www.soinside.com 2019 - 2024. All rights reserved.