如何使用 Tcl_ReadChars 从二进制文件中读取浮点数?

How to read float from binary file using Tcl_ReadChars?

使用 Tcl API 从通道读取的首选方法是 Tcl_ReadChars()。从二进制通道读取时,数据将存储为字节数组直到被引用,此时将完成转换。

然后我有一组函数用于从对象中检索数据:Tcl_Get{String,Double,Int}FromObj()。但是,如果我读入一个浮点数,似乎 none 这些将做正确的事情来提取我想要的值。

在这一点上,我试图从文档中推理。 Tcl_GetDoubleFromObj() 可能会足够灵活来处理这种情况……但根据文档,情况似乎并非如此。

使用 Tcl C API,我应该如何从二进制文件中读取浮点数?

我不能发誓这是你的 Tcl_GetDoubleFromOjb() 实现的来源,但它看起来可能是它的一个版本:http://tclsrc.tyabo.com/tclObj_8c-source.html

它看起来不像是在直接转换原始双精度数。它看起来像是从 TCL 创建的对象中提取一个双精度值,而不是原始字节流。

也许您想研究一下 binary scan 作为从二进制流中提取 floats/doubles 的方法?