Main.java Source code

Java tutorial

Introduction

Here is the source code for Main.java

Source

//package com.java2s;
/*
 *  Copyright 2012 Peter Karich info@jetsli.de
 * 
 *  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 {
    public static long fromBitString2Long(String str) {
        if (str.length() > 64) {
            throw new UnsupportedOperationException(
                    "Strings needs to fit into long (8*8 bits) but length was " + str.length());
        }
        byte[] res = fromBitString(str);
        if (res.length < 8) {
            byte[] newBytes = new byte[8];
            System.arraycopy(res, 0, newBytes, 8 - res.length, res.length);
            res = newBytes;
        }
        return toLong(res);
    }

    public static byte[] fromBitString(String str) {
        // no need for performance or memory tuning ...
        int strLen = str.length();
        int bLen = str.length() / 8;
        if (strLen % 8 != 0) {
            bLen++;
        }

        byte[] bytes = new byte[bLen];
        int charI = 0;
        for (int b = 0; b < bLen; b++) {
            byte res = 0;
            for (int i = 0; i < 8; i++) {
                res <<= 1;
                if (charI < strLen && str.charAt(charI) != '0') {
                    res |= 1;
                }

                charI++;
            }
            bytes[b] = res;
        }
        return bytes;
    }

    public static long toLong(byte[] b) {
        return toLong(b, 0);
    }

    public static long toLong(byte[] b, int offset) {
        return ((long) toInt(b, offset) << 32) | (toInt(b, offset + 4) & 0xFFFFFFFFL);
    }

    public static int toInt(byte[] b) {
        return toInt(b, 0);
    }

    public static int toInt(byte[] b, int offset) {
        return (b[offset] & 0xFF) << 24 | (b[++offset] & 0xFF) << 16 | (b[++offset] & 0xFF) << 8
                | (b[++offset] & 0xFF);
    }
}