Merge long value from two byte buffer. - Java java.nio

Java examples for java.nio:ByteBuffer Long

Description

Merge long value from two byte buffer.

Demo Code

/*/*  w  ww .  j  av a2s. co m*/
 * Copyright 1999-2012 Luca Garulli (l.garulli--at--orientechnologies.com)
 *
 * 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.nio.ByteBuffer;

public class Main {
    public static final int SIZE_OF_LONG = 8;
    private static final int SIZE_OF_BYTE_IN_BITS = 8;
    private static final int MASK = 0x000000FF;

    /**
     * Merge long value from two byte buffer. First bytes of long will be extracted from first byte buffer and second from second one.
     * How many bytes will be read from first buffer determines based on <code>buffer.remaining()</code> value
     * 
     * @param buffer
     *          to read first part of value
     * @param buffer1
     *          to read second part of value
     * @return merged value
     */
    public static long mergeLongFromBuffers(ByteBuffer buffer,
            ByteBuffer buffer1) {
        long result = 0;
        int remaining = buffer.remaining();
        for (int i = 0; i < remaining; ++i) {
            result = result | (MASK & buffer.get());
            result = result << SIZE_OF_BYTE_IN_BITS;
        }
        for (int i = 0; i < SIZE_OF_LONG - remaining - 1; ++i) {
            result = result | (MASK & buffer1.get());
            result = result << SIZE_OF_BYTE_IN_BITS;
        }
        result = result | (MASK & buffer1.get());
        return result;
    }
}

Related Tutorials