问题有两个:
1、如何将一个integer变量 b 的值(在内存中的4字节)直接依次转移到 4个字节的BYTE数组 a 中  。
2、如何将一个4字节 byte 数组 a 中的值,直接转移给一个INTEGER变量 b 。比如
var 
   a:array[0..3] of byte;
   b:integer;1、  b:=65538;   如何直接将 b 的值按照在内存中的存放方式直接依次转移到 a[0]至a[3]中。
2、  a[0]:=2; a[1]:=0;a[2]:=1;a[3]:=0;  如何将a[0]至a[3]的值依次搬动 变量 b 所对应的4个字节中。

解决方案 »

  1.   

    var  
      a:array[0..3] of byte;
      b:integer;move(b,a[0],4)
      

  2.   

    四个byte合成一个integer的五中方式:
    //方法 1: 共用内存 
    procedure  TForm1.Button1Click(Sender: TObject); 
    var   bf:  record  b1,b2,b3,b4: Byte  end ;  
    i: Integer  absolute  bf; 
    begin   
    bf.b1 :=  $CC ;  
    bf.b2 :=  $DD ;  
    bf.b3 :=  $EE ;  
    bf.b4 :=  $FF ;  
    ShowMessageFmt( '%x' , [i]);  //FFEEDDCC end ; 
    //方法 2: 位运算 
    procedure  TForm1.Button2Click(Sender: TObject); 
    var   
    i: Integer; 
    begin   
    i :=  $CC or  ( $DD shl 8 )  or  ( $EE shl 16 )  or  ( $FF shl 24 );  //不用括号也可   
    ShowMessageFmt( '%x' , [i]);  
    //FFEEDDCC end ; 
    //方法 3: 使用函数 procedure  TForm1.Button3Click(Sender: TObject);
     var   i: Integer; 
    begin   i := MakeLong(MakeWord( $CC , $DD ), MakeWord( $EE , $FF ));  ShowMessageFmt( '%x' , [i]);  
    //FFEEDDCC end ; 
    //方法 4: 从静态数组... 
    procedure  TForm1.Button4Click(Sender: TObject); var   
    bs:  array [ 0 .. 3 ]  of  Byte;  
    P: PInteger; 
    begin   bs[ 0 ] :=  $CC ;  
    bs[ 1 ] :=  $DD ;  
    bs[ 2 ] :=  $EE ;  
    bs[ 3 ] :=  $FF ;  
    P := @bs;  ShowMessageFmt( '%x' , [P^]); 
     //FFEEDDCC end ; 
    //方法 5: 从动态数组... 
    procedure  TForm1.Button5Click(Sender: TObject); var   
    bs:  array of  Byte;  
    P: PInteger; 
    begin   SetLength(bs,  4 );  
    bs[ 0 ] :=  $CC ; 
     bs[ 1 ] :=  $DD ;  
    bs[ 2 ] :=  $EE ;  
    bs[ 3 ] :=  $FF ;  
    P := @bs[ 0 ];  
    ShowMessageFmt( '%x' , [P^]);  
    //FFEEDDCC end ;
    摘自:http://www.cnblogs.com/del/archive/2010/04/24/1719378.html?login=1
      

  3.   

    1.可以直接Copymemory或者Move
    2.可以用变体类型的结构体.
    type
      TWordOfInt = array[0..2-1] of WORD;
      TByteOfInt = array[0..4-1] of Byte;
      TIntRec = packed record //定义一个辅助类型,这样转换非常快,而且方便
        case Integer of
          0: (IntValue: Integer);
          1: (Low, High: Word);
          2: (Words: TWordOfInt);
          3: (Bytes: TByteOfInt);
      end;//方法一,借助TIntRec,来转换
    var
      Int : Integer;
      Bytes : TByteOfInt;
    begin
      int := 100;  Bytes := TIntRec(int).Bytes;//integer转字节数组
      Int :=  TIntRec(Bytes).IntValue; //Byte数组转Integerend;//方法二, 直接用TIntRec,不转换.根本不耗费一点点CPU的时间
    var
      value : TIntRec;
    begin
      value.IntValue := 100; //看成Integer
      //下面是看成Byte数组用
      value.Bytes[0] := 1;
      value.Bytes[1] := 1;
      value.Bytes[2] := 1;
      value.Bytes[3] := 1;
    end;