pushad
push p
call address
popadp是封包数据,原本是有3个int的数组,但是传进去的时候要变成“2148000000=80 07 E1 00-->00 E1 07 80”这样的反向,所以就发帖子询问逆向输出的问题:
http://community.csdn.net/Expert/topic/5576/5576774.xml?temp=.5142786但是现在要传进去的数据比较大,是1~20位int不定长的,如果再用上帖中的函数转换,就不太容易做了。
而且听说“这样的不用转换,读到内存的时候是会自己高低反的”,不过我不太明白,就再来问问,的确有简单的方法吗?
push p
call address
popadp是封包数据,原本是有3个int的数组,但是传进去的时候要变成“2148000000=80 07 E1 00-->00 E1 07 80”这样的反向,所以就发帖子询问逆向输出的问题:
http://community.csdn.net/Expert/topic/5576/5576774.xml?temp=.5142786但是现在要传进去的数据比较大,是1~20位int不定长的,如果再用上帖中的函数转换,就不太容易做了。
而且听说“这样的不用转换,读到内存的时候是会自己高低反的”,不过我不太明白,就再来问问,的确有简单的方法吗?
var
buf1,buf2:array[0..255] of byte
i,n:integer;
begin
//buf1赋值略...
n:=low(buf1);
for i:=high(buf1) downto low(buf1) do begin
buf2[n]:=buf1[i];
inc(n);
end;
....
....
end
所以你若要将放到数组里发送出去,只需要:var
i: Integer;
L: DWORD;
BA: array of Byte;
begin
L := 2148000000;
SetLength(BA, SizeOf(L));
PDWORD(@BA[0])^ := L;
for i:=0 to High(BA) do
ShowMessage(IntToHex(BA[i], 2)); // 依次显示00、E1、07、80
end;要不要反向,你再考虑一下。
如,00 E1 07 80 用PLONGINT(ADDRESS)^,出来的就是2148000000=80 07 E1 00
asm
BSWAP eax
end;
网络传输时对于自定义结构中的整型、浮点等类型确实需要注意。