Main.java Source code

Java tutorial

Introduction

Here is the source code for Main.java

Source

//package com.java2s;
/**   Copyright (C) 2013  Louis Teboul (a.k.a Androguide)
 *
 *    admin@pimpmyrom.org  || louisteboul@gmail.com
 *    http://pimpmyrom.org || http://androguide.fr
 *    71 quai Clmenceau, 69300 Caluire-et-Cuire, FRANCE.
 *
 *     This program is free software; you can redistribute it and/or modify
 *     it under the terms of the GNU General Public License as published by
 *     the Free Software Foundation; either version 2 of the License, or
 *     (at your option) any later version.
 *
 *     This program is distributed in the hope that it will be useful,
 *     but WITHOUT ANY WARRANTY; without even the implied warranty of
 *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 *     GNU General Public License for more details.
 *
 *      You should have received a copy of the GNU General Public License along
 *      with this program; if not, write to the Free Software Foundation, Inc.,
 *      51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
 **/

import java.io.UnsupportedEncodingException;
import java.util.ArrayList;

import java.util.List;

public class Main {
    /**
     * Converts a byte array into a String array
     *
     * @param byteArray  byte array to convert
     * @param dataLength length of byte array
     * @return String array copy of passed byte array
     */
    public static List<String> ByteArrayToStringList(byte[] byteArray, int dataLength) {
        if (byteArray == null) {
            return null;
        }
        if (dataLength <= 0) {
            return null;
        }
        if (dataLength > byteArray.length) {
            return null;
        }

        // Replace all invisible chars with '.'
        for (int i = 0; i < dataLength; i++) {
            if ((byteArray[i] == 0x0D) || (byteArray[i] == 0x0A)) {
                byteArray[i] = 0;
                continue;
            }
            if (byteArray[i] < 0x20) {
                byteArray[i] = 0x2E;
            }
            if (byteArray[i] > 0x7E) {
                byteArray[i] = 0x2E;
            }
        }

        // Split and convert to string
        List<String> result = new ArrayList<>();
        for (int i = 0; i < dataLength; i++) {
            if (byteArray[i] == 0) {
                continue;
            }
            int blockLength = -1;
            for (int j = i + 1; j < dataLength; j++) {
                if (byteArray[j] == 0) {
                    blockLength = j - i;
                    break;
                }
            }
            if (blockLength == -1) {
                blockLength = dataLength - i;
            }
            byte[] mBlockData = new byte[blockLength];
            System.arraycopy(byteArray, i, mBlockData, 0, blockLength);
            result.add(ByteToString(mBlockData));
            i += blockLength;
        }
        if (result.size() <= 0) {
            return null;
        }
        return result;
    }

    public static String ByteToString(byte[] byteArray) {
        if (byteArray == null) {
            return null;
        }
        try {
            String result = new String(byteArray, "ASCII");
            result = String.copyValueOf(result.toCharArray(), 0, byteArray.length);
            return result;
        } catch (UnsupportedEncodingException e) {
            return null;
        }
    }
}