---
name: "Convert::BaseN"
section: "3pm"
platform: "linux"
package: "libconvert-basen-perl"
version: "0.01-4"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/Convert::BaseN"
---

# Convert::BaseN(3pm)

encoding and decoding of base{2,4,8,16,32,64} strings

## NAME

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

## VERSION

`$Id:` BaseN.pm,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.
