NAME
   Convert::BaseN - encoding and decoding of base{2,4,8,16,32,64} strings

VERSION
   $Id: README,v 0.1 2008/06/16 17:34:27 dankogai Exp dankogai $

SYNOPSIS
     use Convert::BaseN;
     # by name
     my $cb = Convert::BaseN->new('base64');
     my $cb = Convert::BaseN->new( name => 'base64' );
     # or base
     my $cb = Convert::BaseN->new( base => 64 );
     my $cb_url = Convert::BaseN->new(
       base  => 64,
       chars => '0-9A-Za-z\-_='
     );
     # encode and decode
     $encoded = $cb->encode($data);
     $decoded = $cb->decode($encoded);

EXPORT
   Nothing. Instead of that, this module builds *transcoder object* for you
   and you use its "decode" and "encode" methods to get the job done.

FUNCTIONS
 new
   Create the transcoder object.

     # by name
     my $cb = Convert::BaseN->new('base64');
     my $cb = Convert::BaseN->new( name => 'base64' );
     # or base
     my $cb = Convert::BaseN->new( base => 64 );
     my $cb_url = Convert::BaseN->new(
       base  => 64,
       chars => '0-9A-Za-z\-_='
     );

   You can pick the decoder by name or create your own by specifying base
   and character map.

   base
     Must be 2, 4, 16, 32 or 64.

   chars
     Specifiles the character map. The format is the same as "tr".

       # DNA is coded that way.
       my $dna = Convert::BaseN->new( base => 4, chars => 'ACGT' );

   padding
   nopadding
     Specifies if padding (adding '=' or other chars) is required when
     encoding. default is yes.

       # url-safe Base64
       my $b64url = Convert::BaseN->new(
         base => 64, chars => '0-9A-Za-z\-_=', padding => 0;
       );

   name
     When specified, the following pre-defined encodings will be used.

     base2
       base 2 encoding. "perl" is 01110000011001010111001001101100.

     base4
     DNA
     RNA
       base 4 encodings. "perl" is:

         base4: 1300121113021230
         DNA:   CTAACGCCCTAGCGTA
         RNA:   GAUUGCGGGAUCGCAU

       base 16 encoding. "perl" is "7065726c".

     base32
     base32hex
       base 32 encoding mentioned in RFC4648. "perl" is:

         base32:    OBSXE3A==
         base32hex: E1IN4R0==

     base64
     base64_url
     base64_imap
     base64_ircu
       base 64 encoding, as in MIME::Base64. They differ only in characters
       to represent number 62 and 63 as follows.

         base64:        +/
         base64_url:    -_
         base64_imap:   +,
         base64_ircu:   []

       for all predefined base 64 variants, "decode" accept ANY form of
       those.

 decode
   Does decode

     my $decoded = $cb->decode($data)

 encode
   Does encode.

     # line folds every 76 octets, like MIME::Base64::encode
     my $encoded = $cb->encode($data);
     # no line folding (compatibile w/ MIME::Base64)
     my $encoded = $cb->encode($data, "");
     # line folding by CRLF, every 40 octets
     my $encoded = $cb->encode($data, "\r\n", 40);

SEE ALSO
   RFC4648 <http://tools.ietf.org/html/rfc4648>

   Wikipedia <http://en.wikipedia.org/wiki/Base64>

   <http://www.centricorp.com/papers/base64.htm>

   MIME::Base64

   MIME::Base32

   MIME::Base64::URLSafe

AUTHOR
   Dan Kogai, "<dankogai at dan.co.jp>"

BUGS
   Please report any bugs or feature requests to "bug-convert-basen at
   rt.cpan.org", or through the web interface at
   <http://rt.cpan.org/NoAuth/ReportBug.html?Queue=Convert-BaseN>. I will
   be notified, and then you'll automatically be notified of progress on
   your bug as I make changes.

SUPPORT
   You can find documentation for this module with the perldoc command.

       perldoc Convert::BaseN

   You can also look for information at:

   *   RT: CPAN's request tracker

       <http://rt.cpan.org/NoAuth/Bugs.html?Dist=Convert-BaseN>

   *   AnnoCPAN: Annotated CPAN documentation

       <http://annocpan.org/dist/Convert-BaseN>

   *   CPAN Ratings

       <http://cpanratings.perl.org/d/Convert-BaseN>

   *   Search CPAN

       <http://search.cpan.org/dist/Convert-BaseN>

ACKNOWLEDGEMENTS
   N/A

COPYRIGHT & LICENSE
   Copyright 2008 Dan Kogai, all rights reserved.

   This program is free software; you can redistribute it and/or modify it
   under the same terms as Perl itself.