long readLongLittleEndian( ) { // 8 bytes long accum = 0; for ( int shiftBy=0; shiftBy<64; shiftBy+=8 ) { // must cast to long or shift done modulo 32 accum |= (long)( readByte() & 0xff ) << shiftBy; } return accum; // rem in JDK 1.5+ you can say: return Long.reverseBytes( l ); }