# FreeBSD Manual Pages

```Math::BaseCalc(3)     User Contributed Perl Documentation    Math::BaseCalc(3)

NAME
Math::BaseCalc -	Convert	numbers	between	various	bases

VERSION
version 1.019

SYNOPSIS
use Math::BaseCalc;

my \$calc = new	Math::BaseCalc(digits => [0,1]); #Binary
my \$bin_string	= \$calc->to_base(465); # Convert 465 to	binary

\$calc->digits('oct'); # Octal
my \$number = \$calc->from_base('1574');	# Convert octal	1574 to	decimal

DESCRIPTION
This module facilitates the conversion of numbers between various
number bases.  You may define your own digit sets, or use any of
several predefined digit	sets.

The to_base() and from_base() methods convert between Perl numbers and
strings which represent these numbers in	other bases.  For instance, if
you're using the	binary digit set [0,1],	\$calc->to_base(5) will return
the string "101".  \$calc->from_base("101") will return the number 5.

To convert between, say,	base 7 and base	36, use	the 2-step process of
first converting	to a Perl number, then to the desired base for the
result:

\$calc7	= new Math::BaseCalc(digits=>[0..6]);
\$calc36	= new Math::BaseCalc(digits=>[0..9,'a'..'z']);

\$in_base_36 = \$calc36->to_base(	\$calc7->from_base('3506') );

If you just need	to handle regular octal	& hexdecimal strings, you
probably	don't need this	module.	 See the sprintf(), oct(), and hex()
Perl functions.

METHODS
o   new Math::BaseCalc

o   new Math::BaseCalc(digits=>...)

Create a new	base calculator.  You may specify the digit set	to
use,	by either giving the digits in a list reference	(in increasing
order, with the 'zero' character first in the list) or by
specifying the name of one of the predefined	digit sets (see	the
digit() method below).

If your digit set includes the character "-", then a	dash at	the
beginning of	a number will no longer	signify	a negative number.

o   \$calc->to_base(NUMBER)

Converts a number to	a string representing that number in the
associated base.

If "NUMBER" is a "Math::BigInt" object, "to_base()" will still work
fine	and give you an	exact result string.

o   \$calc->from_base(STRING)

Converts a string representing a number in the associated base to a
Perl	integer.  The behavior when fed	strings	with characters	not in
\$calc's digit set is	currently undefined.

If "STRING" converts	to a number too	large for perl's integer
representation, beware that the result may be auto-converted	to a
floating-point representation and thus only be an approximation.

o   \$calc->digits

o   \$calc->digits(...)

Get/set the current digit set of the	calculator.  With no
arguments, simply returns a list of the characters that make	up the
current digit set.  To change the current digit set,	pass a list
reference containing	the new	digits,	or the name of a predefined
digit set.  Currently the predefined	digit sets are:

bin => [0,1],
hex => [0..9,'a'..'f'],
HEX => [0..9,'A'..'F'],
oct => [0..7],
64  => ['A'..'Z','a'..'z',0..9,'+','/'],
62  => [0..9,'a'..'z','A'..'Z'],

Examples:
\$calc->digits('bin');
\$calc->digits([0..7]);
\$calc->digits([qw(w a l d o)]);

If any of your "digits" has more than one character,	the behavior
is currently	undefined.

AUTHOR
Ken Williams, kwilliams@cpan.org

This is free software in	the colloquial nice-guy	sense of the word.
Copyright (c) 1999, Ken Williams.  You may redistribute and/or modify
it under	the same terms as Perl itself.