String#%は書式制御

RubyのString#%メソッドは、レシーバをprintf的書式制御文字列として扱います。
以下の例では、0〜31の数値を10進数、16進数、2進数で表示します。

(0..31).to_a.each do |k|
  puts "%5d %5X %5b" % [k, k, k]
end

実行結果です。

    0     0     0
    1     1     1
    2     2    10
    3     3    11
    4     4   100
    5     5   101
    6     6   110
    7     7   111
    8     8  1000
    9     9  1001
   10     A  1010
   11     B  1011
   12     C  1100
   13     D  1101
   14     E  1110
   15     F  1111
   16    10 10000
   17    11 10001
   18    12 10010
   19    13 10011
   20    14 10100
   21    15 10101
   22    16 10110
   23    17 10111
   24    18 11000
   25    19 11001
   26    1A 11010
   27    1B 11011
   28    1C 11100
   29    1D 11101
   30    1E 11110
   31    1F 11111