=Anybase
==Arbitrary number bases
So often, I need to create random number bases, with random digits, to satisfy some crazy requirement.
Here is an example of how you'd do hex in Anybase.
base = Anybase.new('0123456789abcdef')
base.to_i('f0a')
=> 3850
base.to_native(123450)
=> "1e23a"
As well, you can tell Anybase to ignore case.
base = Anybase.new('0123456789abcdef', :ignore_case => true)
base.to_i('F0A')
=> 3850
Anybase can also have synonyms.
base = Anybase.new('0123456789abcdef', :synonyms => {'0' => 'oO'})
base.to_i('FoA')
=> 3850
base.to_i('FOA')
=> 3850
Anybase can also zeropad your output with whatever your "zero" character is.
Anybase.new("012345678").to_native(1234, :zero_pad => 8)
=> '00001621'
Anybase gives you a few built-in:
Anybase::Hex, Anybase::Base64, Anybase::Base64ForURL and Anybase::Base62
(should all be pretty self-explanatory)
As well, there is an AnyBase::Base73ForURL. This includes the characters:
ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789$-_.+!*\'(),