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

Java examples for java.lang:byte array to long

Description

Retrieves the long value of a subarray of bytes.

Demo Code

/*******************************************************************************
 * Copyright 2014 Katja Hahn/*from w w  w .  ja v  a 2  s  .co  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(getBytesLongValue(bytes, offset, length));
    }

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

    /**
     * Converts a byte array to a long. 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 long value
     * @throws IllegalArgumentException
     *             if byte array contains more than 8 bytes
     */
    public static long bytesToLong(byte[] bytes) {
        long value = 0;
        for (int i = 0; i < bytes.length; i++) {
            int shift = 8 * i;
            value += (long) (bytes[i] & 0xFF) << shift;
        }
        return value;
    }
}

Related Tutorials