如何从字节数组中执行类似于此C技巧的操作以获取OCaml float
?
union {
double d;
int i[2];
} u;
u.i[0] = 0;
u.i[1] = -20000000; // u.d = -0x1.ed3p+1005
答案 0 :(得分:5)
您可以使用标准库中的Int64.float_of_bits
函数:http://caml.inria.fr/pub/docs/manual-ocaml/libref/Int64.html#VALfloat_of_bits。 Int64.bits_of_float
提供反向功能。
您需要按所需顺序将字节打包到Int64.t
值。
答案 1 :(得分:0)
您可以使用Marshal.to_bytes
。但如果传递的值不是来自John Smith
Nick Jackson
Liza Ashwood
,则无法保证获得的内容。当然,C代码也遇到类似的问题。意义没有定义(尽管人们总是使用它)。