//inputstream 一次读一个byte
//int 有4个byte,故读四次
//首次读的ch1是这个整数的高8bit,故前移(4×8-8×1=24),同理ch2 前移(4×8-8×2=18)位
public final int readInt() throws IOException {
int ch1 = in.read();
int ch2 = in.read();
int ch3 = in.read();
int ch4 = in.read();
if ((ch1 | ch2 | ch3 | ch4) < 0)
throw new EOFException();
return ((ch1 << 24) + (ch2 << 16) + (ch3 << 8) + (ch4 << 0));
}