Main.java Source code

Java tutorial

Introduction

Here is the source code for Main.java

Source

//package com.java2s;
/*
 * Copyright 2010 Giesecke & Devrient GmbH.
 * Author: Manuel Eberl
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 * 
 */

public class Main {
    private static final byte[] charToBitsMap = new byte[255];

    public static final byte[] base32ToByteArray(String str, int nBytes) {
        char[] chars = str.toCharArray();
        byte[] result = new byte[nBytes];

        int bitBuffer = 0, nBitsInBuffer = 0;
        int charIndex = 0;

        for (int byteIndex = 0; byteIndex < nBytes && charIndex < chars.length; byteIndex++) {

            while (nBitsInBuffer < 8 && charIndex < chars.length) {
                byte newBits = charToBitsMap[chars[charIndex++]];
                bitBuffer <<= 5;
                bitBuffer |= newBits;
                nBitsInBuffer += 5;
            }

            nBitsInBuffer -= 8;
            result[byteIndex] = (byte) (bitBuffer >> nBitsInBuffer);
        }

        return result;

    }

    public static byte[] base32ToByteArray(String str) {
        return base32ToByteArray(str, str.length() * 5 / 8);
    }
}