怎么把一个DWORD型的变量分别存放到4位BYTE里呢?

解决方案 »

  1.   

    byte1:=dword and $0f
    byte2:=(dword and $f0) shr 4
    byte3:=(dword and $f00) shr 8
    byte4:=(dword and $f000) shr 12
      

  2.   

    var
      A : DWORD;
      B : array[0..3] of byte;
    begin
      A := 10000;
      move(A,B,4);
    end;
      

  3.   

    var
      A : DWORD;
      B : array[0..3] of byte;
    begin
      A := 10000;  B[0] :=  PByteArray(@A)^[0];
      B[1] :=  PByteArray(@A)^[1];
      B[2] :=  PByteArray(@A)^[2];
      B[3] :=  PByteArray(@A)^[3];
    end;
      

  4.   

    无聊中,也来贴一段吧:
    var
      A : DWORD;
      B : array[0..3] of byte;
      P : PByte;
      i : Byte;
    begin
      A := 10000;
      P :=@A;
      for i:=0 to 3 do
      begin
        B[i] :=  P^;
        if i<3 do
          Inc(P);
      end;
    end;
      

  5.   

    无聊中,再来贴一段:
    var
      A : DWORD;
      B : array[0..3] of byte;
    begin
      A := 10000;  CopyMemory(@B,@A,SizeOf(DWORD));
    end;
      

  6.   

    分别取出高字和低字
    hw:=HIWord(A)
    lw:=LOWORD(A)
    分别取字的高字节和低字节。
    i1:=HIBYTE(hw),i2:=LOBYTE(hw);i3:=HIBYTE(lw);i3:=LO(BYTE);
    Delphi的这几个函数类似于C++的宏,实际上也是移位运算取得,有现成的函数,何必自己去搞呢,哈哈
      

  7.   

    谢谢,这个算法已经行了,我想再多问一下,DWORD传给四个BYTE,应该是从高到低呢,还是从低到高?