如何在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)
以获取'