rubyworks / radix

Base Conversions
http://rubyworks.github.com/radix
Other
54 stars 9 forks source link

Radix

Gem Version     Fork Me Report Issue Build Status     Gittip Flattr Me

Radix is a very easy to use Ruby library for converting numbers to and from any base. It supports Integer, Float and Rational numbers, as well as representational string-notations that need not be in ASCII order.

Features

Usage

Base conversions with ASCII ordered notations are easy in Ruby.

255.to_s(16)   #=> "FF"

"FF".to_i(16)  #=> 255

But Ruby reaches it's limit at base 36.

255.to_s(37)   #=> Error

Radix provides the means of converting to and from any base.

For example, a number in base 256 can be represented by the array [100, 10] (100**256 + 10**1) and can be convert to base 10.

[100,10].b(256).to_a(10)  #=> [2,5,6,1,0]

Or, to get a string representation for any base up to 62.

[100,10].b(256).to_s(10)  #=> "25610"

A string representation of a number can be converted too, again, up to base 62.

"10".b(62).to_s(10)  #=> "62"

To use a custom character set, use an array of characters as the base rather than an integer. For example we can convert a base 10 number to another base 10 number using a different encoding.

base = [:Q, :W, :E, :R, :T, :Y, :U, :I, :O, :U]

"10".b(10).to_a(base)  #=> [:W, :Q]

To learn more have a look at the QED Demo.

Installing

If using Bundler, then add the ususal gem entry to your project's Gemfile.

gem 'radix'

To install with RubyGems simply open a console and type:

$ gem install radix

Radix follows Ruby Setup package standard so it can also be installed in an FHS compliant manner using setup.rb (very old-school and no longer recommeded).

Special Thanks

Special thanks to douglascodes for taking the time to fully document Radix's API. Documentation is an under-addressed and time-consuming affair, so your contribution is greatly appreciated. Thank you, Douglas!

Copyrights

Copyright (c) 2009 Rubyworks

This program is distributable in accordance with the BSD-2-Clause license.

See LICENSE.txt for details.