我用VC读出来是0,10,20,30,40...
可是JAVA读出来是0,16772160,335544320,503316480....
是我的代码不对么?

解决方案 »

  1.   

    你先直接用你读出来的String打出来看看是什么?
      

  2.   

    你的意思是把dat里的整型数读出来??
      

  3.   

    这个函数和你想的不一样,文档里说:Reads four input bytes and returns an int value. 是读四个字节,然后换算成整数。你的dat是什么格式,我告你别的读法。
      

  4.   

    int a,b,c,d;
            L.readInt();
            a = L.read();
            b = L.read();
            c = L.read();
            d = L.read();
            int  Result = (d <<  24) + (c << 16) + (b << 8) + a;
    这样就对了?
    为什么?难道和操作系统有关,我用WINDOWS2K
    还是和INTEL芯片有关?
    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));
    这是JAVA的原代码,我和它读的顺序反了一下,读出来就对了,谁可以帮我解释一下?
      

  5.   

    formalin(福尔马林):我的文件全是整形数,用VC生成的。
      

  6.   

    是不是VC保存格式和JAVA读取格式不同呀,看样子正好相反!
      

  7.   

    用C++,Java语言,存在数据移植问题。因为在计算机系统中,当包含数字的二进制文件从一个结构移到另一结构时,就出现大尾小尾问题。不同CPU在多字节数(如四字节int)存储时有两种方法,一种方法叫小尾(little_endian),数据的低字节被放置在连续存储区的首位,另一种方法叫大尾(big_endian),数据的高字节被放置在连续存储区的首位。Intel 80×86家族处理器是最后一个仍然坚持小尾的主要结构。所有其他的CPU结构(Motorola 680×0和所有RISC芯片)或者是纯粹的大尾或者是既适应大尾也适应小尾,大尾被认为是更符合逻辑的方法)。当数字由小尾处理器写入文件然后又由大尾处理器读取(或者倒过来)时,数字就会被搞乱(除了0和-1)。运用C++或C语言,数据在文件中的存储形式是与处理器相关的,这使得简单的数据文件的移植成为一个大问题。而Java作为平台独立语言,所有的数据都是以大尾形式存储到文件中,Java语言本身产生的数据文件无移植问题。但是它在与C/ C++通讯时还应注意,