在下面代码中如何将字节数组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;
var buff:array[0..3] of byte;
x:longword;
begin
buff[0]:=$00;
buff[2]:=$43;
buff[3]:=$10;
buff[4]:=$01;
....
end;
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;
如
buff[0]:=$00;
buff[1]:=$25;
转换成数字应该是37
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;
如
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;
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;
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 类型的变量中的。
不过哪个两位的数据不对确实是误解。