如何将一个WORD类型的变量赋给一个两个BYTE的数组?在线等。

解决方案 »

  1.   

    如下:
    var i:word;
        j:array [0..1] of byte;
    begin
        i:=1000;
        //如何将i的值赋给数组j呢?
    end;
      

  2.   

    j[0]:=i and $FF;
    j[1]:=i and $FF00 shr 8;
      

  3.   

    我是想通过内存拷贝完成这个工作。
    CopyMemory(Pointer(j[0]),Pointer(@i),2);
    不过好象不行,大家说用什么方法?Move?
      

  4.   

    哦,是我写错了,
    CopyMemory(Pointer(@j[0]),Pointer(@i),2);
    这样就可以了。
      

  5.   

    内存拷贝恐怕没有Eastunfail(恶鱼杀手)提供的那个方法快。
      

  6.   

    如果不考虑速度和编程效率,办法恐怕多得很。
    比如,使用Hi和Lo函数;
    或者干脆用汇编写一个函数,更快 :)
      

  7.   

    我举的例子只是特例而已,如果数组对数组拷贝,Eastunfail(恶鱼杀手)提供的那个方法的很麻烦了。
      

  8.   

    可以用指针实现
    不过还是使用hi lo函数这样配合上循环比较好
      

  9.   

    如果要用CopyMemory的话,也可以实现:
    CopyMemory(@j[0],@i,2);
      

  10.   

    注意字节序列是高位在前的原则,跟网络的字节序列刚好相反。
    var
     i: word;
     pb: pbyte;pb := @i; //是高位
    Inc(pb);  //pb,此时是低位
      

  11.   

    asm
    lea si,i
    lea di,j
    mov [di],[byte ptr si]
    inc di
    inc si
    mov [di],[byte ptr si]
    end;
      

  12.   

    用两个指针就搞定了,一个指向word,一个指向数组
      

  13.   

    為什么搞得那么復雜!!??Word(j):=i ;
    這樣就ok了!
      

  14.   

    用 Hi 和 Lo 函数好的很。
      

  15.   

    Hi 和 Lo 很方便了,或者要求速度的话,用absolute最方便:var
        w:word;
        b:array [0..1] of byte;absolute w;这样 b[0]=hi(w) b[1]=lo(w)了
      

  16.   

    嘻嘻,不好意思,上面最后那句我hi/lo写反了
      

  17.   

    嘻嘻,不好意思,上面那句hi/lo我写反了