Как превратить символы в биты в Ruby - PullRequest
0 голосов
/ 28 сентября 2018

Мне просто интересно, есть ли какой-либо метод или класс, который может напрямую преобразовывать строки в биты, например, 'h' в '01001000'.

Более конкретно, способ превращения слов, предложений или целыхтекстовые файлы в двоичный текст.

Я знаю, что есть методы, которые могут дать номер символа в таблице ascii, например,

'h'.ord #=> 104

, но я ищу метод, которыйможет преобразовывать не только отдельные символы, но и строки и, возможно, текстовые файлы прямо в двоичное представление.

Ответы [ 2 ]

0 голосов
/ 01 ноября 2018

Вы можете использовать unpack:

'hello'.unpack('B*')
#=> ["0110100001100101011011000110110001101111"]
#     ^^^^^^^^
#     01101000 = h
0 голосов
/ 28 сентября 2018

String#ord дает вам код ASCII.Integer#to_s принимает основание основания в качестве аргумента:

"a".ord
=> 97
97.to_s(2)
=> "1100001"

"a".ord.to_s(2)
=> "1100001"

"a".ord.to_s(2).chars.map(&:to_i)
=> [1, 1, 0, 0, 0, 0, 1]
  # ^  ^  ^  ^  ^  ^  ^
  # 64 32 16 8  4  2  1
  #
  # 64 + 32 + 1 = 97
...