Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
用Ruby整数位生成布尔数组_Ruby_Arrays_Binary - Fatal编程技术网

用Ruby整数位生成布尔数组

用Ruby整数位生成布尔数组,ruby,arrays,binary,Ruby,Arrays,Binary,好的,我想知道我是否可以用一个整数的位来创建一个布尔值数组。例如,如果我想使用5,它是二进制的101,是否有任何合理的简单方法,我可以得到这样的形式: [true, false, true] 这个想法是1是真的,0是假的。将其作为一个0和1的数组就足够了,但是true和false更可取 提前感谢您的帮助。这将有效: num = 5 (0...num.bit_length).map { |i| num[i] == 1 } #=> [true, false, true] 或 取决于所需的位

好的,我想知道我是否可以用一个整数的位来创建一个布尔值数组。例如,如果我想使用5,它是二进制的101,是否有任何合理的简单方法,我可以得到这样的形式:

[true, false, true]
这个想法是1是真的,0是假的。将其作为一个0和1的数组就足够了,但是true和false更可取

提前感谢您的帮助。

这将有效:

num = 5
(0...num.bit_length).map { |i| num[i] == 1 }
#=> [true, false, true]

取决于所需的位顺序。

这将起作用:

num = 5
(0...num.bit_length).map { |i| num[i] == 1 }
#=> [true, false, true]

取决于所需的位顺序。

尝试以下操作:

x = 5.to_s(2).split(//).collect do |n|
  n == "1"
end

p x
试试这个:

x = 5.to_s(2).split(//).collect do |n|
  n == "1"
end

p x

请看我对一个类似问题的回答:

以下是它的要点:

在Ruby中,整数(即Bignums和fixmums)可以像位数组一样被索引。然而,它们不是可枚举的

当然,你可以解决这个问题:

class Integer
  include Enumerable

  def each
    return to_enum unless block_given?      
    (size*8).times {|i| yield self[i] }
  end
end
稍微不那么麻烦的方法可能是将整数表示为数组:

class Integer
  def to_a
    Array.new(size*8, &method(:[]))
  end
end
然后可以使用Ruby的漂亮的可枚举方法:


请看我对一个类似问题的回答:

以下是它的要点:

在Ruby中,整数(即Bignums和fixmums)可以像位数组一样被索引。然而,它们不是可枚举的

当然,你可以解决这个问题:

class Integer
  include Enumerable

  def each
    return to_enum unless block_given?      
    (size*8).times {|i| yield self[i] }
  end
end
稍微不那么麻烦的方法可能是将整数表示为数组:

class Integer
  def to_a
    Array.new(size*8, &method(:[]))
  end
end
然后可以使用Ruby的漂亮的可枚举方法:

或者简单地收集{n{124; n==1}您也可以说.chars而不是.split//或者简单地收集{n{124; n==1}您也可以说.chars而不是.split//