在下面代码中如何将字节数组buff转换成longword类型的数字x
var buff:array[0..3] of byte;
    x:longword;
begin
 buff[0]:=$00;
 buff[2]:=$43;
 buff[3]:=$10;
 buff[4]:=$01;
 ....
end;

解决方案 »

  1.   

    procedure TForm1.Button3Click(Sender: TObject);
    var buff:array[0..3] of byte;
        x:longword;
        i:integer;
    begin
     buff[0]:=$00;
     buff[1]:=$00;
     buff[2]:=$01;
     buff[3]:=$01;
     x:=0;
     for i := low(buff) to High(buff) do
     begin
       x:=(x+buff[i])*256;
     end;
     edit1.Text :=Inttostr(x);
    end;
      

  2.   

    楼上的运算结果不对呀

     buff[0]:=$00;
     buff[1]:=$25;
    转换成数字应该是37
      

  3.   

    var
    P:Plongword;
    X:longword;
    buff:array[0..3] of byte;
    begin
     buff[0]:=$00;
     buff[1]:=$43;
     buff[2]:=$10;
     buff[3]:=$01;
     P:=@Buff[0];
     x:=P^;
      
    end;
      

  4.   

    jsyzwx(王祥)  不对么,你两位的buff:array[0..1] of byte;

     buff[0]:=$00;
     buff[1]:=$25;
    procedure TForm1.Button3Click(Sender: TObject);
    var buff:array[0..1] of byte;
        x:longword;
        i:integer;
    begin
     buff[0]:=$00;
     buff[1]:=$25;
     x:=0;
     for i := low(buff) to High(buff) do
     begin
       x:=(x+buff[i])*256;
     end;
     edit1.Text :=Inttostr(x);
    end;
      

  5.   

    6位的
    procedure TForm1.Button3Click(Sender: TObject);
    var buff:array[0..5] of byte;
        x:longword;
        i:integer;
    begin
     buff[0]:=$00;
     buff[1]:=$25;
     buff[2]:=$00;
     buff[3]:=$25;
     buff[4]:=$00;
     buff[5]:=$25;
     x:=0;
     for i := low(buff) to High(buff) do
     begin
       x:=(x+buff[i])*256;
     end;
     edit1.Text :=Inttostr(x);
    end;
      

  6.   

    其实结果如何决定于你设计在源数据中的字节顺序,如果在内存中的位置刚好与 Longword 的字节顺序相同,用 Move 方法比较快:procedure TForm1.Button1Click(Sender: TObject);
    var
      buff: array[0..3] of byte;
      x: longword;
    begin
      buff[0]:=$00;
      buff[1]:=$43;
      buff[2]:=$10;
      buff[3]:=$01;
      Move(buff, x, SizeOf(x));
      ShowMessage(IntToStr(x));
    end;上面结果是:17842944如果字节顺序不同就只能一个字节一个字节算了,如楼上的一些方法。如果是六个字节的数组,实际是不可能发到一个 Longword 类型的变量中的。
      

  7.   

    sorry ,6位那是太长了,要int64
    不过哪个两位的数据不对确实是误解。