Да, используя очень мощную библиотеку перечислителей:
require 'enumerator'
def convert(binary_string)
decimal_equivalent = 0
binary_string.reverse.enum_for(:each_char).each_with_index do |binary, i|
decimal_equivalent += binary.to_i * (2 ** i)
end
return decimal_equivalent
end
Кстати, вас могут заинтересовать Array#pack
и String#unpack
. У них есть поддержка битовых строк. Кроме того, еще более простой способ получить этот результат - использовать #to_i
, например, "101".to_i(2) #=> 5