var
  stre : TMemoryStream;
  i :integer;
begin
  stre := TMemoryStream.Create;
  i := 2222;
  stre.Write(i,4);
  stre.SaveToFile('d:\1.dat');ue用16进制查看文件里面显示是AE 08 00 00
而不是08 AE 00 00或是00 00 08 AE
这是怎么回事?

解决方案 »

  1.   

    这是由 CPU 的处理模式决定的。机器语言处理 double 整数时是低字在前,高字在后,处理 word 整数时是低字节在前,高字节在后。编译程序也按照这种方式排列,运行时速度最快。现在很少有人关注这个了,楼主真是有心人。
      

  2.   


    这个适合于所有语言?假若某协议保存协议包大小,比如java也这样保存和读取?我试了java保存的方式得出的结果不一样,保存出来的是00 00 08 AE
      

  3.   

    学习过计算机原理吗?
    X86处理器就是这样的.高地位是颠倒的.
    ARM处理器不是这样的.
      

  4.   

    没学汇编和计算机原理
    ---------------------
    用什么工具可以直接内存中的MemoryStream?
      

  5.   

    不晓得楼主为什么对这个感兴趣,一般只有用其他语言跟JAVA做对接的时候,或者做手持开发的时候才会有人关心数据的存储方式跟CPU有关,目前桌面级CPU都是将低位放在前面,高位放在后面。JAVA因为要做到平台统一,所以强制所有平台都是高位在前面,低位在后面,所以会有你所述的发现。
      

  6.   


    在用java做coldfusion扩展插件的时候发现这个问题的,文件存储是由dephi写的,读取要用java