2.6. Konwersje między różnymi podstawami liczenia

Problem

Chcemy wyrażać wartości liczbowe w różnych układach liczenia.

Rozwiązanie

Stałe binarne, ósemkowe i szesnastkowe zapisuje się, rozpoczynając od prefiksu (odpowiednio) 0b, 0o i 0x:

0b100                          # => 4
0o100                          # => 64
0x100                          # => 256

Możliwa jest także konwersja wartości liczbowej do równoważnego jej łańcucha, wyrażonego w systemie liczenia o dowolnej podstawie z zakresu od 2 do 36 — należy podstawę tę podać jako argument wywołania metody Integer#to_s.

42.to_s(10)                       # => "42"
-100.to_s(2)                      # => "-1100100"
255.to_s(16)                      # => "ff"
1442151747.to_s(36)               # => "number"

Konwersję odwrotną wykonuje się za pomocą metody String#to_i wywoływanej z podstawą liczenia jako argumentem:

"1045".to_i(10) # => ...

Get Ruby. Receptury now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.