begin Socket.ReceiveBuf(len,2);//這里只有2字節數據,Socket.ReceiveBuf(len,4); //如何把len转成十进制 ShowMessage(IntToStr(len));//這里顯示的可能就是樓主所說的十進制數據了吧?還是... end;
var len:array[0..3] of byte; iValue:integer; begin Socket.ReceiveBuf(len,4); iValue:=PInteger(@len[0])^; end;
Var Buf : array of char ; msg : String; temp1,temp2,sum : string; I : Integer; Num : String; MyRece : Array[1..30] of Byte; begin SetLength(buf,30); Socket.ReceiveBuf(buf[0],30); For I := 0 to 14 do Begin temp1 := buf[(2*i)]; //0 temp2 := buf[(2*i+1)]; //1 sum := temp1 + temp2; MyRece[i] := hextoint(sum); temp1 := ''; temp2 := ''; sum := ''; End; For I :=0 to 14 do Begin msg := msg + inttohex(MyRece[i],2)+' '; End;//*********************把两个以内的字符串转化成十六进制**********************// Function HexToInt(S : String) : Integer; Var tmpInt1,tmpint2 : Integer; Begin if Length(S)=1 Then begin Result := Hex(S[1]); End Else If Length(S) = 2 Then Begin tmpInt1 := Hex(S[1]); tmpInt2 := Hex(S[2]); if (tmpInt1 = -1 ) or (tmpInt2 = -1 ) Then Result := -1 Else Result := TmpInt1 * 16 + tmpInt2; End Else Result := -1; End; //*********************把两个以内的字符串转化成十六进制**********************////***************************把一个字符转化成十六进制*********************// Function Hex(c : char ) : Integer; Var x : Integer; Begin if c = '' Then x := 0 Else if (Ord(c) >= Ord('0')) and (Ord(c) <= Ord('9')) Then x :=Ord(c)-Ord('0') Else if (Ord(c) >= Ord('a')) and (Ord(c) <= Ord('f')) Then x :=Ord(c) - Ord('a') + 10 Else if (Ord(c) >= Ord('A')) and (Ord(c) <= Ord('F')) Then x := Ord(c)- Ord('A') + 10 Else x := -1; Result := x; End; //***************************把一个字符转化成十六进制*********************//
len:Word;
begin
Socket.ReceiveBuf(len,2);//這里只有2字節數據,Socket.ReceiveBuf(len,4);
//如何把len转成十进制
ShowMessage(IntToStr(len));//這里顯示的可能就是樓主所說的十進制數據了吧?還是...
end;
len:array[0..3] of byte;
iValue:integer;
begin
Socket.ReceiveBuf(len,4);
iValue:=PInteger(@len[0])^;
end;
Buf : array of char ;
msg : String;
temp1,temp2,sum : string;
I : Integer;
Num : String;
MyRece : Array[1..30] of Byte;
begin
SetLength(buf,30);
Socket.ReceiveBuf(buf[0],30);
For I := 0 to 14 do
Begin
temp1 := buf[(2*i)]; //0
temp2 := buf[(2*i+1)]; //1
sum := temp1 + temp2;
MyRece[i] := hextoint(sum);
temp1 := '';
temp2 := '';
sum := '';
End;
For I :=0 to 14 do
Begin
msg := msg + inttohex(MyRece[i],2)+' ';
End;//*********************把两个以内的字符串转化成十六进制**********************//
Function HexToInt(S : String) : Integer;
Var
tmpInt1,tmpint2 : Integer;
Begin
if Length(S)=1 Then
begin
Result := Hex(S[1]);
End
Else
If Length(S) = 2 Then
Begin
tmpInt1 := Hex(S[1]);
tmpInt2 := Hex(S[2]);
if (tmpInt1 = -1 ) or (tmpInt2 = -1 ) Then
Result := -1
Else
Result := TmpInt1 * 16 + tmpInt2;
End
Else
Result := -1;
End;
//*********************把两个以内的字符串转化成十六进制**********************////***************************把一个字符转化成十六进制*********************//
Function Hex(c : char ) : Integer;
Var
x : Integer;
Begin
if c = '' Then
x := 0
Else if (Ord(c) >= Ord('0')) and (Ord(c) <= Ord('9')) Then
x :=Ord(c)-Ord('0')
Else if (Ord(c) >= Ord('a')) and (Ord(c) <= Ord('f')) Then
x :=Ord(c) - Ord('a') + 10
Else if (Ord(c) >= Ord('A')) and (Ord(c) <= Ord('F')) Then
x := Ord(c)- Ord('A') + 10
Else
x := -1;
Result := x;
End;
//***************************把一个字符转化成十六进制*********************//