用Haskell写二进制数据以供C读取吗?

我有一个包含由data.binary序列化的[Double]的文件,我想用c来读取它。也就是说,我想编写一个c程序,将数据作为double[]读入内存。我正计划编写一个haskell程序来反序列化数据文件,然后将二进制数据写入一个新的更简单的文件,我可以直接读取到c中,但我不确定如何只写出原始二进制数据(例如,一个double需要8字节)。


最佳答案:

使用Data.Binary序列化DoubleFloat值对可移植性不是很好。Binary实例以decodeFloat获得的形式序列化值,即作为尾数和指数。尾数被序列化为Integer。不方便的解析。更好的方法是,正如ehird已经建议的那样,使用一个变量将它们序列化为ieee-754表示的位模式,正如cereal-ieee754-正如ehird提醒我的那样,它已经被合并到cereal-或者已经提到的data-binary-ieee754.另一个选项是通过show将它们序列化为字符串。这样做的好处是避免任何末端问题。