gpt4 book ai didi

python - 将 64 位浮点格式字符串转换为 float

转载 作者:行者123 更新时间:2023-11-28 21:54:34 25 4
gpt4 key购买 nike

我有一堆 64 位浮点格式字符串,我必须将它们转换为 float 。我知道格式是什么样的,但我想知道是否有内置函数可以直接完成这项工作,如:

convertToFloat(C06FCA5E35000000) --> -254.324 
convertToFloat(405F7D70A4000000) --> +125.96

我知道如何手动将这些位模式转换为数字,但它需要大量的位移。有没有更好的办法?

我将 'C06FCA5E35000000' 修改为 '\xC0\x6F\xCA\x5E\x35\x00\x00\x00',并存储到 myString 中。

>>>print (myString)
\xC0\x6F\xCA\x5E\x35\x00\x00\x00
>>>d = struct.unpack('>d', myString)
d = struct.unpack('>d', myString)
struct.error: unpack requires a string argument of length 8

为什么会这样?

我没有使用 binascii.a2b_hex 或 binascii.b2a_hex,因为它将“A”转换为“41”或将“41”转换为“A”。两者都不是我想要的。对吧?

>>>print len('\xC0\x6F\xCA\x5E\x35\x00\x00\x00')
8
>>>print len(myString)
32

现在我知道为什么会这样了,但我仍然不知道如何解决这个问题。

最佳答案

您可以使用struct.unpack>d 是 big-endian double;有关更多信息,请参见help(struct)!

import struct

d, = struct.unpack('>d', b'\xc0\x6f\xca\x5e\x35\x00\x00\x00')

print(d)
# -254.32399988174438

如果您的字符串确实是'C06FCA5E35000000',您可以先使用binascii.a2b_hex 将其转换为字节。 .

关于python - 将 64 位浮点格式字符串转换为 float ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24028631/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com