Retrieves the integer value of a subarray of bytes. - Java java.lang

Java examples for java.lang:byte Array to int

Description

Retrieves the integer value of a subarray of bytes.

Demo Code

/*******************************************************************************
 * Copyright 2014 Katja Hahn/*w  w w  . j  av  a  2 s.  c o m*/
 * 
 * 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.
 ******************************************************************************/
//package com.java2s;
import java.util.Arrays;

public class Main {
    public static void main(String[] argv) throws Exception {
        byte[] bytes = new byte[] { 34, 35, 36, 37, 37, 37, 67, 68, 69 };
        int offset = 2;
        int length = 2;
        System.out.println(getBytesIntValue(bytes, offset, length));
    }

    /**
     * Retrieves the integer value of a subarray of bytes. The values are
     * considered little endian. The subarray is determined by offset and
     * length.
     * <p>
     * Presumes the byte array to be not null and the length must be between 1
     * and 4 inclusive.
     * 
     * @param bytes
     *            the little endian byte array that shall be converted to int
     * @param offset
     *            the index to start reading the integer value from
     * @param length
     *            the number of bytes used to convert to int
     * @return int value
     * @throws IllegalArgumentException
     *             if length is larger than 4 or smaller than 1
     */
    public static int getBytesIntValue(byte[] bytes, int offset, int length) {
        byte[] value = Arrays.copyOfRange(bytes, offset, offset + length);
        return bytesToInt(value);
    }

    /**
     * Converts a byte array to an int. The bytes are considered unsigned and
     * little endian (first byte is the least significant).
     * 
     * @param bytes
     *            the little endian byte array that shall be converted to int
     * @return int value
     * @throws IllegalArgumentException
     *             if byte array contains more than 4 bytes
     */
    public static int bytesToInt(byte[] bytes) {
        int value = 0;
        for (int i = 0; i < bytes.length; i++) {
            int shift = 8 * i;
            value += (bytes[i] & 0xFF) << shift;
        }
        return value;
    }
}

Related Tutorials