是否可以将 float 转换为 double?
Is it possible to convert a float to double?
我正在开发一个 TXT 到 SPC 的转换器,某些值必须存储为双精度的十六进制,但 Python 仅适用于浮点数和 struct.unpack(‘<d’, struct.pack(‘<f’, value))
/任何其他解包和打包由于字节大小的差异,我能想到的俄罗斯套娃不工作。
SPC 库将 SPC 中的所述值解压缩为 <d
并将它们转换为浮点数 float()
我该怎么办?
我想您可能对不同编程语言的命名策略感到困惑。
有 class 种数据类型,称为 "floating point numbers"。 IEEE-754 定义的两种浮点数类型是 "binary32" 和 "binary64"。在 C 和 C++ 中,这两种类型分别公开为 float
和 double
类型。在 Python 中,只有 "binary64" 作为内置类型被原生支持;它被称为 float
。
Python 的 struct
模块同时支持 binary32 和 binary64,并使用 C/C++ 的命名法来引用它们。 f
指定 binary32,d
指定 binary64。无论您使用哪种,该模块都会从 Python 的原生 float
类型(记住,是 binary64)打包和解包。在 d
的情况下,这是准确的;在 f
的情况下,它会转换引擎盖下的类型。您不需要欺骗 Python 进行转换。
现在,我假设您对 "stored as hex of double" 的看法是错误的。我认为您的意思可能是 "stored as double"——即文件中的 64 位——而不是存储为 "hex of double",即 16 个人类可读的 ASCII 字符。后一种情况不会发生。
综上所述,如果你想将东西存储为binary64,这只是struct.pack('d', value)
的问题。
我正在开发一个 TXT 到 SPC 的转换器,某些值必须存储为双精度的十六进制,但 Python 仅适用于浮点数和 struct.unpack(‘<d’, struct.pack(‘<f’, value))
/任何其他解包和打包由于字节大小的差异,我能想到的俄罗斯套娃不工作。
SPC 库将 SPC 中的所述值解压缩为 <d
并将它们转换为浮点数 float()
我该怎么办?
我想您可能对不同编程语言的命名策略感到困惑。
有 class 种数据类型,称为 "floating point numbers"。 IEEE-754 定义的两种浮点数类型是 "binary32" 和 "binary64"。在 C 和 C++ 中,这两种类型分别公开为 float
和 double
类型。在 Python 中,只有 "binary64" 作为内置类型被原生支持;它被称为 float
。
Python 的 struct
模块同时支持 binary32 和 binary64,并使用 C/C++ 的命名法来引用它们。 f
指定 binary32,d
指定 binary64。无论您使用哪种,该模块都会从 Python 的原生 float
类型(记住,是 binary64)打包和解包。在 d
的情况下,这是准确的;在 f
的情况下,它会转换引擎盖下的类型。您不需要欺骗 Python 进行转换。
现在,我假设您对 "stored as hex of double" 的看法是错误的。我认为您的意思可能是 "stored as double"——即文件中的 64 位——而不是存储为 "hex of double",即 16 个人类可读的 ASCII 字符。后一种情况不会发生。
综上所述,如果你想将东西存储为binary64,这只是struct.pack('d', value)
的问题。