是否可以将 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++ 中,这两种类型分别公开为 floatdouble 类型。在 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)的问题。