public static void updateLong(Checksum checksum, long input) {
        checksum.update((byte) (input >> 56));
        checksum.update((byte) (input >> 48));
        checksum.update((byte) (input >> 40));
        checksum.update((byte) (input >> 32));
        checksum.update((byte) (input >> 24));
        checksum.update((byte) (input >> 16));
        checksum.update((byte) (input >> 8));
        checksum.update((byte) input /* >> 0 */);
    }
@Test
    public void testUpdateLong() {
        final long value = Integer.MAX_VALUE + 1;
        final ByteBuffer buffer = ByteBuffer.allocate(8);
        buffer.putLong(value);

        Checksum crc1 = Crc32C.create();
        Checksum crc2 = Crc32C.create();

        Checksums.updateLong(crc1, value);
        crc2.update(buffer.array(), buffer.arrayOffset(), 8);

        assertEquals(crc1.getValue(), crc2.getValue(), "Crc values should be the same");
    }