Method: Fixnum#digits_for_new_base

Defined in:
lib/quality_extensions/fixnum/change_base.rb

#digits_for_new_base(base, padding = 0) ⇒ Object

Converts to a new base, returning the digits as an array.



12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
# File 'lib/quality_extensions/fixnum/change_base.rb', line 12

def digits_for_new_base(base, padding = 0)
  digits = []
  if self == 0
    digits = [0]
  else
    remainder = self
    max_exponent = (Math.log(self)/Math.log(base)).to_i
    max_exponent.downto(0) do |exp|
      #puts "#{remainder} / #{base**exp}"
      digit, remainder = remainder.divmod(base**exp)
      digits << digit
    end
  end
  digits.pad(-padding, 0)
end