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

У меня есть ситуация, когда мне нужно преобразовать двоичное значение в шестнадцатеричное в ruby ​​следующим образом:
если bin = "0000111", то мой выход должен быть: hex = "07"
& предположим, что если bin = "010001111", то o / p должно быть: hex = "08f"
Может ли кто-нибудь помочь мне, как это сделать .. Заранее спасибо ..

Ответы [ 3 ]

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

Как насчет:

>> "0x%02x" % "0000111".to_i(2) #=> "0x07"
>> "0x%02x" % "010001111".to_i(2) #=> "0x8f"

Редактировать: если вы не хотите, чтобы вывод был 0x.., а просто 0.. пропустите первый x в строке формата.

8 голосов
/ 15 августа 2014
def bin_to_hex(s)
    s.each_byte.map { |b| b.to_s(16).rjust(2,'0') }.join
end

Что я нашел здесь (с модификациями заполнения нулями):

http://anthonylewis.com/2011/02/09/to-hex-and-back-with-ruby/

5 голосов
/ 18 мая 2011

И String#to_i, и Integer#to_s принимают необязательный целочисленный аргумент, определяющий основание.Таким образом, вы можете преобразовать вашу двоичную строку в целое число, используя основание 2, а затем преобразовать это целое обратно в строку, используя основание 16.

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