Class: Fixnum
- Defined in:
- lib/quality_extensions/color/rgb.rb,
lib/quality_extensions/fixnum/change_base.rb
Overview
–
- Author
-
Tyler Rick
- Copyright
-
Copyright © 2009, Tyler Rick
- License
-
Ruby License
- Submit to Facets?
-
Maybe
- Developer notes
-
It’s probably already been implemented in a better, more efficient way. Will remove when I run across said better implementation…
- Changes
-
++
Instance Method Summary collapse
- #change_base(base, padding = 0, numerals = nil) ⇒ Object
-
#digits_for_new_base(base, padding = 0) ⇒ Object
Converts to a new base, returning the digits as an array.
-
#to_rgb ⇒ Object
:nodoc:.
Instance Method Details
#change_base(base, padding = 0, numerals = nil) ⇒ Object
28 29 30 31 32 33 |
# File 'lib/quality_extensions/fixnum/change_base.rb', line 28 def change_base(base, padding = 0, numerals = nil) numerals ||= (0..9).to_a + ('a'..'z').to_a numerals.map!(&:to_s) digits_for_new_base(base, padding).map {|digit| numerals[digit]}.join end |
#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 |
#to_rgb ⇒ Object
:nodoc:
15 16 17 18 19 |
# File 'lib/quality_extensions/color/rgb.rb', line 15 def to_rgb a, b = divmod(65536) b, c = b.divmod(256) return [a, b, c] end |