@Override
    public void put(final ByteBuffer destByteBuffer, final int index, final long val) {
        validateValue(val);
        int idx = index;
        for (int i = 0; i < len; i++) {
            final int shift = (len - i - 1) * 8;
            destByteBuffer.put(idx++, (byte) (val >> shift));
        }

    }
Each instance provides methods for working with unsigned longs that are written
to len bytes. The maximum numeric value of the unsigned value will be governed
by len, e.g for len == 1, the range of values are 0-255.
stroom-lmdb/src/main/java/stroom/lmdb/serde/UnsignedBytesInstances.java