我有一个文件,其中数据排放的顺序与正常相反,比如我用filestream.read(s,2) s为smallint型,这样读出的数据是0100,而我需要的数据是0001,比如我用filestream.read(s,4) s为float型,这样读出的数据是01000000,而我需要的数据是00000001,怎么可以快速的把数据按字节交换,得到我需要的数值呢?

解决方案 »

  1.   

    http://topic.csdn.net/u/20110407/20/fed96f76-458a-42e0-8e26-a5bd20e66e4c.html
    用我的回答也可以,不过用高手:lihuasoft的回答更好些。
    // 跟别人学的bswap汇编指令,挺好用 procedure  TForm1.Button1Click(Sender: TObject); var   X, Y : DWord; begin   X : = 100 ; asm   mov eax, X;   bswap eax;   mov Y, eax;  end ; Showmessage(Format( ' X=%.8x, Y=%.8x ' ,[X, Y])); end ;
      

  2.   


    // 2字节
    function Swap(Data: Word): Word; overrload;
    asm
      xchg ah, al
    end;// 4字节
    function Swap(Data: DWORD): DWORD; overrload;
    asm
      bswap eax
    end;