在OCaml中,如何从字节数组创建一个浮点数?

时间:2015-05-28 18:11:40

标签: floating-point ocaml

如何从字节数组中执行类似于此C技巧的操作以获取OCaml float

union {
  double d;
  int i[2];
} u;

u.i[0] = 0;
u.i[1] = -20000000; // u.d = -0x1.ed3p+1005

2 个答案:

答案 0 :(得分:5)

您可以使用标准库中的Int64.float_of_bits函数:http://caml.inria.fr/pub/docs/manual-ocaml/libref/Int64.html#VALfloat_of_bitsInt64.bits_of_float提供反向功能。

您需要按所需顺序将字节打包到Int64.t值。

答案 1 :(得分:0)

您可以使用Marshal.to_bytes。但如果传递的值不是来自John Smith Nick Jackson Liza Ashwood ,则无法保证获得的内容。当然,C代码也遇到类似的问题。意义没有定义(尽管人们总是使用它)。