如何在OCaml中将浮点转换为小尾端格式的字节?

如何在OCaml中将浮点转换为小尾端格式的字节?,ocaml,Ocaml,如何将浮点值转换为小尾端格式的字节 像 像这样: # let v = Int64.bits_of_float 5.05 in for i = 0 to 7 do Printf.printf "%Lx " (Int64.logand 255L (Int64.shift_right v (i*8))) ; done ;; 33 33 33 33 33 33 14 40 - : unit = () 像这样: # let v = Int64.bits_of_float 5.05

如何将浮点值转换为小尾端格式的字节

像这样:

# let v = Int64.bits_of_float 5.05 in
  for i = 0 to 7 do
    Printf.printf "%Lx " (Int64.logand 255L (Int64.shift_right v (i*8))) ;
  done 
  ;;
33 33 33 33 33 33 14 40 - : unit = ()
像这样:

# let v = Int64.bits_of_float 5.05 in
  for i = 0 to 7 do
    Printf.printf "%Lx " (Int64.logand 255L (Int64.shift_right v (i*8))) ;
  done 
  ;;
33 33 33 33 33 33 14 40 - : unit = ()

我希望有一个高效的原语来实现这一点。我如何从中获得字节数组?@MartinJambon如果效率是一个问题,一个短C函数可以在一次分配中完成所有事情(即结果的分配,比如一个
字符串
)。我的解决方案在64位体系结构上分配了17个两个字的块,每个字包括标题:
v
、8个移位部分结果和8个对数结果。不太好,但也不是你真正注意到的东西,除非你的程序花时间访问浮点数字节。@JacksonTale向我解释一下OCaml中的“字节数组”是什么,我会告诉你如何获得一个。或者更好的办法是,把我完全排除在外,向OCaml解释什么是字节数组,并用依次传递给
Printf.Printf“%Lx”
Char.chr(Int64.to_int 32L)的值填充它
要获得
我希望有一个有效的原语。我如何从中获得字节数组?@MartinJambon如果效率是一个问题,一个简短的C函数可以在一次分配中完成所有事情(例如,一个
字符串
)。我的解决方案在64位体系结构上分配了17个两个字的块,每个字包括标题:
v
、8个移位部分结果和8个对数结果。不太好,但也不是你真正注意到的东西,除非你的程序花时间访问浮点数字节。@JacksonTale向我解释一下OCaml中的“字节数组”是什么,我会告诉你如何获得一个。或者更好的办法是,把我完全排除在外,向OCaml解释什么是字节数组,并用依次传递给
Printf.Printf“%Lx”
Char.chr(Int64.to_int 32L)
以获取
'