我有一个int,让我们说6,我想把它转换成一个数组。
bArr.(0) = 1
bArr.(1) = 1
bArr.(2) = 0
有什么功能可以帮我吗?
我需要它成为一个数组,以便我可以将它传递给其他接收布尔数组的函数。
答案 0 :(得分:3)
可以使用以下函数计算整数n
的{{1}}位:
x
可以使用 let nth_bit x n = x land (1 lsl n) <> 0
函数创建并初始化数组:
Array.init
这将在LSB(最低有效位)第一顺序中创建一个布尔数组。如果您需要一个整数数组,那么您可以使用函数 let bitarray length x = Array.init length (nth_bit x)
而不是nth_bit_value
:
nth_bit
我将把它留作练习,以MSB顺序获取数组。
答案 1 :(得分:0)
let int_to_bArr i =
let rec int_to_bit acc i =
if i=0 then acc
else int_to_bit (i land 1::acc) (i lsr 1)
in
let l=int_to_bit [] i in
Array.of_list l
;;
测试
# int_to_bArr 6;;
- : int array = [|1; 1; 0|]
或者
let int_to_bArr i =
let rec int_to_bool acc i =
if i=0 then acc
else int_to_bool (((i land 1)=1)::acc) (i lsr 1)
in
let l=int_to_bool [] i in
Array.of_list l
;;
# int_to_bArr 6;;
- : bool array = [|true; true; false|]