Как вернуть двоичное представление фиксированной длины целого числа в Ruby?

Я знаю, что я могу использовать Fixnum#to_s для представления целых чисел в виде строк в двоичном формате. Однако 1.to_s(2) создает 1, и я хочу, чтобы он создавал 00000001. Как я могу заставить все возвращенные строки иметь нули в качестве заполнения до 8 символов? Я мог бы использовать что-то вроде:

binary = "#{'0' * (8 - (1.to_s(2)).size)}#{1.to_s(2)}" if (1.to_s(2)).size < 8

но это не кажется очень изящным.

Ответ 1

Использовать формат строки.

"%08b" % 1
# => "00000001"

Ответ 2

Использование String#rjust:

1.to_s(2).rjust(8, '0')
=> "00000001"

Ответ 3

Используйте String#% метод для форматирования строки

 "%08d" % 1.to_s(2)
 # => "00000001" 

Вот ссылка для разных параметров форматирования.