2014-09-16 2 views
1

У меня есть строка «10010», и я полагаю, что сама строка является двоичным числом. Как я могу преобразовать String «10010» в двоичный код вроде 0b10010?Как преобразовать строку в двоичный файл в Ruby

+0

, пожалуйста, определите * «что-то вроде 0b10010» *, вы хотите скрыть его до '18' или вы хотите добавить« 0b »к строке? – Stefan

+0

@Stefan Я хочу преобразовать эту строку в двоичное число, вместо того, чтобы использовать to_i (2), что приводит к десятичному эквиваленту, поэтому я набирал 0b10010 – bhanu

+0

Это неверно, все номера хранятся в двоичном формате. Нет такой вещи, как «десятичный эквивалент». См. Ответ @ sawa. –

ответ

4

Там не существует понятия «десятичное число» или «двоичного числа» в объектах Руби. Все, что есть, - это числа (на самом деле все числа двоичные на низком уровне и необходимы не на более высоком уровне, но это не имеет отношения к объектам Ruby). «Десятичный» или «двоичный» - это лишь некоторые способы представления чисел. Поэтому вы не можете преобразовать что-то в «двоичное число». Все, что вы можете сделать, это преобразовать его в число.

+1

Хорошо! +1 .. –

5

Вы можете передать базу методы to_i:

"10010".to_i(2) #=> 18 

Обратите внимание, что число внутренне хранятся в виде двоичного файла. Если вы хотите, чтобы произвести вывод указанный вами, вы бы преобразовать его обратно в строку, используя sprintf:

sprintf("%#b", 18) #=> "0b10010" 

Но если вы не заботитесь о ведущей «0b», то вы можете также передать основание к to_s метод:

18.to_s(2) #=> "10010" 
+0

Хороший ответ и объяснение тоже. :-) –

Смежные вопросы