Provided by: libmath-basecalc-perl_1.017-2_all bug

NAME

       Math::BaseCalc - Convert numbers between various bases

VERSION

       version 1.017

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

       •   new Math::BaseCalc

       •   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.

       •   $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.

       •   $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.

       •   $calc->digits

       •   $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.

QUESTIONS

       The '64' digit set is meant to be useful for Base64 encoding.  I took it from the
       MIME::Base64.pm module.  Does it look right?  It's sure in a strange order.

AUTHOR

       Ken Williams, ken@forum.swarthmore.edu

COPYRIGHT

       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.

SEE ALSO

       perl(1).