core/src/main/java/com/orientechnologies/common/util/OByteBufferUtils.java
public static long mergeLongFromBuffers(final ByteBuffer buffer, final ByteBuffer buffer1) {
    long result = 0;
    final 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;
  }
public static long mergeLongFromBuffers(final ByteBuffer buffer, final ByteBuffer buffer1) {
    long result = 0;
    final 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;
  }
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