Java ByteBuffer to Long readUInt64(ByteBuffer byteBuffer)

Here you can find the source of readUInt64(ByteBuffer byteBuffer)

Description

read U Int

License

Apache License

Declaration

public static long readUInt64(ByteBuffer byteBuffer) 

Method Source Code

//package com.java2s;
/*/*from   ww  w . j  ava2s. com*/
 * Copyright 2012 Sebastian Annies, Hamburg
 *
 * 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.
 */

import java.nio.ByteBuffer;

public class Main {
    public static long readUInt64(ByteBuffer byteBuffer) {
        long result = 0;
        // thanks to Erik Nicolas for finding a bug! Cast to long is definitivly needed
        result += readUInt32(byteBuffer) << 32;
        if (result < 0) {
            throw new RuntimeException(
                    "I don't know how to deal with UInt64! long is not sufficient and I don't want to use BigInt");
        }
        result += readUInt32(byteBuffer);

        return result;
    }

    public static long readUInt32(ByteBuffer bb) {
        long i = bb.getInt();
        if (i < 0) {
            i += 1l << 32;
        }
        return i;
    }
}

Related

  1. readUBEInt16(ByteBuffer b)
  2. readUInt16(ByteBuffer bb)
  3. readUInt16BE(ByteBuffer bb)
  4. readUInt32(ByteBuffer buf, int length)
  5. readUInt64(ByteBuffer bb)
  6. readUInt8(ByteBuffer bb)
  7. readVarLong(ByteBuffer buff)
  8. readVarlong(ByteBuffer buffer)
  9. toLong(ByteBuffer buffer)