Links

Base64 Encoding Class

base64.zip
Easy to use class supporting BASE64 encoding for your C++ project.


CBase64 Class Reference


Public Member Functions

size_t CalcBufferSize (size_t length) const
bool IsBase64Char (uchar c) const
uchar Encode (uchar c) const
size_t Encode (const uchar *in, size_t length, uchar *outbuf, size_t size, uint option=BASE64_STANDARD) const
uchar Decode (uchar c) const
size_t Decode (const uchar *in, size_t length, uchar *outbuf, size_t size, uint option=BASE64_STANDARD) const

Static Public Member Functions

static uchar to_uchar (char c)

Detailed Description

 Encode/Decode data according to Base64 encoding format
 These routines use the 64-character subset of International
 Alphabet IA5 discussed in RFC 1421 (printeable encoding) and RFC 1522
 (base64 MIME).

 Value Encoding  Value Encoding  Value Encoding  Value Encoding
     0 A            17 R            34 i            51 z
     1 B            18 S            35 j            52 0
     2 C            19 T            36 k            53 1
     3 D            20 U            37 l            54 2
     4 E            21 V            38 m            55 3
     5 F            22 W            39 n            56 4
     6 G            23 X            40 o            57 5
     7 H            24 Y            41 p            58 6
     8 I            25 Z            42 q            59 7
     9 J            26 a            43 r            60 8
    10 K            27 b            44 s            61 9
    11 L            28 c            45 t            62 +
    12 M            29 d            46 u            63 /
    13 N            30 e            47 v
    14 O            31 f            48 w         (pad) =
    15 P            32 g            49 x
    16 Q            33 h            50 y
 

Member Function Documentation

static uchar CBase64::to_uchar ( char  c  )  [inline, static]
Convert to uchar
Parameters:
c ASCII character
Returns:
unsigned character

size_t CBase64::CalcBufferSize ( size_t  length  )  const [inline]
Calculate buffer size requirement
Parameters:
length size of binary data in bytes
Returns:
size of required buffer including NULL

bool CBase64::IsBase64Char ( uchar  c  )  const [inline]
Test if a character is a valid Base64 alphabet
Parameters:
c character to test
Returns:
true if valid Base64 alphabet

uchar CBase64::Encode ( uchar  c  )  const [inline]
Encode a byte to Base64 encoding
Parameters:
c byte to convert to Base64 (6-bit)
Returns:
value byte in Base64 alphabet, or error (-1) for invalid input

size_t CBase64::Encode ( const uchar *  in,
size_t  length,
uchar *  outbuf,
size_t  size,
uint  option = BASE64_STANDARD 
) const
Encode an array of bytes to Base64 string
Parameters:
in byte pointer of data source
length size of data source
outbuf byte pointer of destination buffer
size size of destination buffer
option newline option
Returns:
number of bytes copied, or error (-1) for invalid input

uchar CBase64::Decode ( uchar  c  )  const
Decode a Base64 alphabet data to 6-bit representation
Parameters:
c Alphabet data to convert to binary value
Returns:
binary value (0-63), or error (-1) for invalid input

size_t CBase64::Decode ( const uchar *  in,
size_t  length,
uchar *  outbuf,
size_t  size,
uint  option = BASE64_STANDARD 
) const
Decode an array of bytes to binary. It's safe for 'in' and 'outbuf' to be the same buffer.
Parameters:
in byte pointer of data source (Base64 Alphabet)
length size of data source
outbuf byte pointer of destination buffer
size size of destination buffer
option newline option
Returns:
number of bytes copied, or error (-1) for invalid input