After taking a closer look at the java.nio buffers I found that they use BIG_ENDIAN encoding and further more, everytime you allocate(), duplicate() or cast asReadOnlyBuffer(), the endianness resets to BIG_ENDIAN. Thus to solve it, everytime those operations are used, subsequent calls to order(LITTLE_ENDIAN) are required.