这个问题你可以测试一下啊,先把整形存入磁盘,再按照字节读取出来,不就知道了。不过说真的,学java研究这种的意义不大。一般情况下都不需要考虑是低位在前还是高位在前。我做十几年的c编程也只曾经在一个项目中考虑过这种问题,是因为程序需要与其它机器通信(工控机),而对方传过来的字节数据在c里面需要做高低位转换才能够处理成整形。

解决方案 »

  1.   


    java不能直接写int啊,只能写byte[],在写硬盘之前,就要考虑大小端了
      

  2.   

    楼主说的大小端是不同主机之间的通信问题,主机的字节序大小端是由CPU决定的,跟写硬盘没有关系,跟网络通信有关,而且网络通信两边都是Java的话,根本不用考虑这个问题,因为Java代码是在虚拟机中执行的,虚拟机字节序和网络字节序都是大端的,根本不用转化。
      

  3.   

    see dataoutputstream,可以写int
      

  4.   

    那个写的是最低位的byte不是int,虽然参数是int
      

  5.   


    import java.io.*;public class Test { public static void main(String[] args) {
    try {
    DataOutputStream dos = null;
    dos = new DataOutputStream(new FileOutputStream("e:\\abc.dat"));
    dos.writeInt(0xFF00F00F);
    dos.flush();
    dos.close(); byte[] b = new byte[4];
    InputStream is = new FileInputStream("e:\\abc.dat");
    is.read(b);
    is.close(); for (int i = 0; i < 4; i++) {
    System.out.println("b[" + i + "]=" + b[i]);
    }
    } catch (Exception e) {
    e.printStackTrace();
    } }
    }
    此程序的运行结果是
    b[0]=-1
    b[1]=0
    b[2]=-16
    b[3]=15
    可见在磁盘中存储的是高位在前,低位在后的,这很容易可以测试啊。
      

  6.   


    dos.writeInt(0xFF00F00F);
    改成
    dos.writeInt(0x01020304);
    看的就更明显了,输出结果
    b[0]=1
    b[1]=2
    b[2]=3
    b[3]=4