16,748
社区成员
发帖
与我相关
我的任务
分享
function ChangeOrder(I: Integer): Integer;
asm
mov cl,ah
mov ch,al
shl ecx,16
shr eax,16
mov cl,ah
mov ch,al
mov eax,ecx
end;
我也来显丑了
uses WinSock;
procedure TForm1.Button2Click(Sender: TObject);
var
i:Integer;
begin
i:=236006660;
i:=htonl(i);
ShowMessage(IntToStr(i));
end;
function ConvetLH(Num: Integer): Integer;
begin
Result := Num div (1 shl 24) + Num mod (1 shl 24) div (1 shl 16) shl 8
+ Num mod (1 shl 16) div (1 shl 8) shl 16 + Num mod 256 shl 24;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
ShowMessage('236006660高位移到低位后变成:'+InttoStr(ConvetLH(236006660)));
end;
function ChangeOrder1(I: Integer): Integer;
begin
Result := (I shr 24) + (I shr 8) and $0000FF00 + (I shl 8) and $00FF0000 + (I shl 24) and $FF000000
end;
function ChangeOrder2(I: Integer): Integer;
var
P: PByte;
begin
P := PByte(@I);
Result := P^ shl 24;
Inc(P);
Inc(Result, P^ shl 16);
Inc(P);
Inc(Result, P^ shl 8);
Inc(P);
Inc(Result, P^)
end;
function ChangeOrder3(I: Integer): Integer;{速度最快}
asm
push eax
xchg [esp+3],al
mov [esp],al
mov cl,[esp+2]
mov [esp+2],ah
mov [esp+1],cl
pop eax
end;
function ConvetLH(Num: Integer): Integer;
var
Arr, Brr: array of Byte;
s: string;
B: Byte;
I: Integer;
begin
s := InttoStr(Num);
SetLength(Arr, 4);
CopyMemory(Arr, @Num, 4);
SetLength(Brr, 4);
for I := High(Arr) downto Low(Arr) do
begin
Brr[3-I] := Arr[I];
end;
Result := PInteger(Brr)^;
end;
{To Do...}
procedure TForm1.Button1Click(Sender: TObject);
begin
ShowMessage(InttoStr(ConvetLH(236006660)) + ' - 70062350');
end;