public static void main(String[] arguments) {
  try {
FileInputStream file = new FileInputStream("400primes.dat");
BufferedInputStream buff = new BufferedInputStream(file);
DataInputStream data = new DataInputStream(buff);
         try {
while (true) {   short in = data.readShort();   System.out.print(in + " ");
}

         catch (EOFException eof) {
  buff.close();
}
     } 
     catch (IOException e) {
       System.out.println("Error -- " + e.toString());
     }
}

解决方案 »

  1.   

    readShort();是按十六进制读的,"112233"的十六进制是31 31 32 32 33 33,转成short就是12593 12850 13107
      

  2.   

    是不是因为 。DAT文件中的数使用ACSII码输入的。
    而每个ACSII码在计算机里站一个字节
    readShort();要读16位即2个字节 1的ACSII为31(16进制)
    所以读入的是3131(16进制)的数
    而十进制数12593就是16进制数3131
    不知道我理解的对否?