TMemoryStream保存下来的整型数据是颠倒的
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
这是怎么回事?
这是由 CPU 的处理模式决定的。机器语言处理 double 整数时是低字在前,高字在后,处理 word 整数时是低字节在前,高字节在后。编译程序也按照这种方式排列,运行时速度最快。现在很少有人关注这个了
这个适合于所有语言?假若某协议保存协议包大小,比如java也这样保存和读取?我试了java保存的方式得出的结果不一样,保存出来的是00 00 08 AE
X86处理器就是这样的.高地位是颠倒的.
ARM处理器不是这样的. 一般只有用其他语言跟JAVA做对接的时候,或者做手持开发的时候才会有人关心。。。数据的存储方式跟CPU有关,目前桌面级CPU都是将低位放在前面,高位放在后面。JAVA因为要做到平台统一,所以强制所有平台都是高位在前面,低位在后面,所以会有你所述的发现。