Преобразование шестнадцатеричного числа в двоичное в ruby - PullRequest
11 голосов
/ 12 мая 2011

Я пытаюсь преобразовать шестнадцатеричное значение в двоичное значение (каждый бит в шестнадцатеричной строке должен иметь эквивалентное четырехбитовое двоичное значение). Мне посоветовали использовать это:

num = "0ff" # (say for eg.)
bin = "%0#{num.size*4}b" % num.hex.to_i

Это дает мне правильный вывод 000011111111. Меня смущает, как это работает, особенно %0#{num.size*4}b. Может ли кто-нибудь помочь мне с этим?

Ответы [ 2 ]

11 голосов
/ 12 мая 2011

Вы также можете сделать:

num = "0ff"
num.hex.to_s(2).rjust(num.size*4, '0')

Возможно, вы уже выяснили, но num.size*4 - это количество цифр, которое вы хотите дополнить выводом до 0, потому что одна шестнадцатеричная цифра представлена ​​четырьмя (log_2 16 = 4) двоичными цифрами.

4 голосов
/ 12 мая 2011

Вы найдете ответ в документации Kernel#sprintf (как указано в документации для String#%):

http://www.ruby -doc.org / core / classes /Kernel.html # M001433

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...