比如byte[0],byte[1],byte[2],byte[3] 拷贝到LongWord[0]
结果为:LongWord[0]:=byte[0] shl 24+byte[1] shl 16+byte[2] shl 8+byte[3]我试了几种方法都得不到需要的结果。请教高手,谢谢

解决方案 »

  1.   

    楼主好像搞反了,应该是:LongWordNum[0]:=ByteNum[3] shl 24+ByteNum[2] shl 16+ByteNum[1] shl 8+ByteNum[0];如果byte[0],byte[1],byte[2],byte[3]数组里面存的是一个LongWord的话,这样就可以了:LongWordNum[0] :=  PLongWord(@ByteNum[0])^;通用的方法还有定义一个变体记录类型的数据,或用指针进行内存复制。。
      

  2.   

    如果楼主使用过C或C++ 中的 union 我给你介绍一个新朋友。
    type
      ST = packed record
        case Integer of
          0: (F1: Integer);
          1:
          (FB1: Byte;
            FB2: Byte;
            FB3: Byte;
            FB4: Byte; )
      end;procedure TForm11.Button2Click(Sender: TObject);
    var
      mt: ST;
    begin
      mt.F1 := 100;   // 使用integer
      mt.FB1 := 1;     //使用byte
    end;
    使用RECORD 才是王道!!!