我定义了一个longint类型的变量a:=12,在内存中从低地址到高地址各Byte的值依次为12,0,0,0(高位在高地址),现在希望将存放的值逆转,即要使内存中从低地址到高地址各Byte的值依次为0,0,0,12(高位在低地址),以便实现网络传送。不知道该怎么实现?

解决方案 »

  1.   

    好像是这样,没试。
    function Change(V: Integer): Integer;
    var
      I: Integer;
      Src, Dst: PByte;
    begin
      Src := @V;
      Dst := Integer(@Result) + SizeOf(Integer);
      for I := 0 to SizeOf(Integer) - 1 do
      begin
        Dst^ := Src^;
        Inc(Src);
        Dec(Dst);
      end;
    end;
      

  2.   

    好像是这样,没试。
    function Change(V: Integer): Integer;
    var
      I: Integer;
      Src, Dst: PByte;
    begin
      Src := @V;
      Dst := Pointer(Integer(@Result) + SizeOf(Integer));
      for I := 0 to SizeOf(Integer) - 1 do
      begin
        Dst^ := Src^;
        Inc(Src);
        Dec(Dst);
      end;
    end;
      

  3.   

    >>以便实现网络传送
    你什么网络?发个Integer的字节顺序都不一样?
      

  4.   

    楼上朋友:
       你只是得到了转换顺序后的值,并没有改变变量V的内存存放值。
       因为服务器是Linux平台,变量在内存中的字节存放顺序正好我机器的相反。
      

  5.   

    汇编指令 XChange:我好象记错了。意思对就行了。