return (buf[7] & 0xFF) << 56 | (buf[6] & 0xFF) << 48 | (buf[5] & 0xFF) << 40 | (buf[4] & 0xFF) << 32 | (buf[3] & 0xFF) << 24 | (buf[2] & 0xFF) << 16 | (buf[1] & 0xFF) <<  8 | (buf[0] & 0xFF);
return ((buf[7] & 0xFF) << 56) | ((buf[6] & 0xFF) << 48) | ((buf[5] & 0xFF) << 40) | ((buf[4] & 0xFF) << 32) | ((buf[3] & 0xFF) << 24) | ((buf[2] & 0xFF) << 16) | ((buf[1] & 0xFF) <<  8) | (buf[0] & 0xFF);
  public long readLong() throws IOException  {    int ret = readInt();    if (ret != 0xffffffff)      {        return ret;      }    byte[] buf = new byte[8];    read(buf);    return (buf[7] & 0xFF) << 56 | (buf[6] & 0xFF) << 48         | (buf[5] & 0xFF) << 40 | (buf[4] & 0xFF) << 32         | (buf[3] & 0xFF) << 24 | (buf[2] & 0xFF) << 16         | (buf[1] & 0xFF) <<  8 | (buf[0] & 0xFF);  }