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 );

   }