blob: a3b1fc2c94c56709524f323b848df9d4d90b4d29 [file] [log] [blame]
// Copyright 1996-1999, International Business Machines
// Corporation. All Rights Reserved.
package org.apache.log4j.test;
class Base64 {
final static int MAX_LINE = 76;
static byte[] asciiEncoding =
//A B C D E F G H I J K L M N O P Q
{65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81,
//R S ... Z a b c d e f g
82, 83, 84, 85, 86, 87, 88, 89, 90, 97, 98, 99, 100, 101, 102, 103,
//h i j k l m n o p q r s t u
104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117,
//v w x y z 0 1 2 3 4 5 6 7 8 9 + /
118, 119, 120, 121, 122, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 43, 47};
static char[] charEnc = new char[64];
static {
for(int i = 0; i < 26; i ++) {
charEnc[i] = (char) ('A' + i);
charEnc[i+26] = (char) ('a' + i);
}
for(int i = 0; i < 10; i ++) {
charEnc[i+52] = (char) ('0' + i);
}
charEnc[62] = '+';
charEnc[63] = '/';
}
static
String toString(byte[] inbuf) {
return toString(inbuf, 0, inbuf.length);
}
/**
*/
static
String toString(byte[] inbuf, int offset, int length) {
StringBuffer output = new StringBuffer((length)*4/3 + 1);
int in;
char[] out = new char[4];
int i = offset;
boolean ended = false;
int last = offset + length;
int j;
int bitsRead;
while(!ended) {
in = 0;
bitsRead = 0;
for(j = 0; j < 3; j++) {
if(i == last) {
ended = true;
break;
}
in = (in << 8) | (inbuf[i++] & 0xFF);
bitsRead += 8;
}
while(bitsRead >= 6) {
bitsRead -= 6;
output.append(charEnc[(in >>> bitsRead) & 0x3F]);
}
if(bitsRead == 4) {
output.append(charEnc[(in & 0x0F) << 2]);
output.append("=");
}
else if (bitsRead == 2) {
output.append(charEnc[(in & 0x03) << 4]);
output.append("==");
}
}
return output.toString();
}
public static void main(String[] args) {
byte[] inbuf = new byte[MAX_LINE];
while(true) {
try {
int read = System.in.read(inbuf, 0, MAX_LINE);
if(read == -1) break;
System.out.println("Read " + read + " chars.");
System.out.println(Base64.toString(inbuf, 0, read));
}
catch (Exception e) {
System.out.println("Exception " + e);
}
}
}
}