@Test void testReadingSixBytesToLong() { byte[] bytes = new byte[] { 0, 0, 0, 0, 0, 1 }; ByteBuffer bb = ByteBuffer.wrap(bytes).order(LITTLE_ENDIAN); assertThat(Utils.readBytesAsUnsignedLong(bb, 6), is(equalTo(1099511627776L))); assertThat(bb.position(), is(6)); }
public static long readBytesAsUnsignedLong(ByteBuffer buffer, int length) { switch (length) { case 1: return Byte.toUnsignedLong(buffer.get()); case 2: return Short.toUnsignedLong(buffer.getShort()); case 3: return readArbitraryLengthBytesAsUnsignedLong(buffer, length); case 4: return Integer.toUnsignedLong(buffer.getInt()); case 5: case 6: case 7: return readArbitraryLengthBytesAsUnsignedLong(buffer, length); case 8: long value = buffer.getLong(); if (value < 0 && value != Constants.UNDEFINED_ADDRESS) { throw new ArithmeticException("Could not convert to unsigned"); } return value; default: throw new IllegalArgumentException("Couldn't read " + length + " bytes as int"); } }
Utils { public static long readBytesAsUnsignedLong(ByteBuffer buffer, int length) { switch (length) { case 1: return Byte.toUnsignedLong(buffer.get()); case 2: return Short.toUnsignedLong(buffer.getShort()); case 3: return readArbitraryLengthBytesAsUnsignedLong(buffer, length); case 4: return Integer.toUnsignedLong(buffer.getInt()); case 5: case 6: case 7: return readArbitraryLengthBytesAsUnsignedLong(buffer, length); case 8: long value = buffer.getLong(); if (value < 0 && value != Constants.UNDEFINED_ADDRESS) { throw new ArithmeticException("Could not convert to unsigned"); } return value; default: throw new IllegalArgumentException("Couldn't read " + length + " bytes as int"); } } }
Utils { public static long readBytesAsUnsignedLong(ByteBuffer buffer, int length) { switch (length) { case 1: return Byte.toUnsignedLong(buffer.get()); case 2: return Short.toUnsignedLong(buffer.getShort()); case 3: return readArbitraryLengthBytesAsUnsignedLong(buffer, length); case 4: return Integer.toUnsignedLong(buffer.getInt()); case 5: case 6: case 7: return readArbitraryLengthBytesAsUnsignedLong(buffer, length); case 8: long value = buffer.getLong(); if (value < 0 && value != Constants.UNDEFINED_ADDRESS) { throw new ArithmeticException("Could not convert to unsigned"); } return value; default: throw new IllegalArgumentException("Couldn't read " + length + " bytes as int"); } } private  Utils(); }
Utils { public static long readBytesAsUnsignedLong(ByteBuffer buffer, int length) { switch (length) { case 1: return Byte.toUnsignedLong(buffer.get()); case 2: return Short.toUnsignedLong(buffer.getShort()); case 3: return readArbitraryLengthBytesAsUnsignedLong(buffer, length); case 4: return Integer.toUnsignedLong(buffer.getInt()); case 5: case 6: case 7: return readArbitraryLengthBytesAsUnsignedLong(buffer, length); case 8: long value = buffer.getLong(); if (value < 0 && value != Constants.UNDEFINED_ADDRESS) { throw new ArithmeticException("Could not convert to unsigned"); } return value; default: throw new IllegalArgumentException("Couldn't read " + length + " bytes as int"); } } private  Utils(); static String toHex(long address); static String readUntilNull(ByteBuffer buffer); static boolean validateName(String name); static void seekBufferToNextMultipleOfEight(ByteBuffer bb); static int readBytesAsUnsignedInt(ByteBuffer buffer, int length); static long readBytesAsUnsignedLong(ByteBuffer buffer, int length); static ByteBuffer createSubBuffer(ByteBuffer source, int length); static int bitsToInt(BitSet bits, int start, int length); static int bytesNeededToHoldNumber(long number); static int[] linearIndexToDimensionIndex(int index, int[] dimensions); static int dimensionIndexToLinearIndex(int[] index, int[] dimensions); static int[] chunkIndexToChunkOffset(int chunkIndex, int[] chunkDimensions, int[] datasetDimensions); static int[] stripLeadingIndex(int[] dims); }
Utils { public static long readBytesAsUnsignedLong(ByteBuffer buffer, int length) { switch (length) { case 1: return Byte.toUnsignedLong(buffer.get()); case 2: return Short.toUnsignedLong(buffer.getShort()); case 3: return readArbitraryLengthBytesAsUnsignedLong(buffer, length); case 4: return Integer.toUnsignedLong(buffer.getInt()); case 5: case 6: case 7: return readArbitraryLengthBytesAsUnsignedLong(buffer, length); case 8: long value = buffer.getLong(); if (value < 0 && value != Constants.UNDEFINED_ADDRESS) { throw new ArithmeticException("Could not convert to unsigned"); } return value; default: throw new IllegalArgumentException("Couldn't read " + length + " bytes as int"); } } private  Utils(); static String toHex(long address); static String readUntilNull(ByteBuffer buffer); static boolean validateName(String name); static void seekBufferToNextMultipleOfEight(ByteBuffer bb); static int readBytesAsUnsignedInt(ByteBuffer buffer, int length); static long readBytesAsUnsignedLong(ByteBuffer buffer, int length); static ByteBuffer createSubBuffer(ByteBuffer source, int length); static int bitsToInt(BitSet bits, int start, int length); static int bytesNeededToHoldNumber(long number); static int[] linearIndexToDimensionIndex(int index, int[] dimensions); static int dimensionIndexToLinearIndex(int[] index, int[] dimensions); static int[] chunkIndexToChunkOffset(int chunkIndex, int[] chunkDimensions, int[] datasetDimensions); static int[] stripLeadingIndex(int[] dims);  }