var
  len:Word;
begin
  Socket.ReceiveBuf(len,4);
  如何把len转成十进制
end;

解决方案 »

  1.   

    再說Word的長度為兩個字節,而樓主接收四個字節...這個是怎麼回事?難道可以偷內存來使用?
      

  2.   

    如果沒錯的話,樓主應該接收的實際上是兩個字節的數據,只是在輸入端以四位十六進制來表示,如此,樓主可以試試下面的代碼:var
      len:Word;
      
    begin
      Socket.ReceiveBuf(len,2);//這里只有2字節數據,Socket.ReceiveBuf(len,4);
      //如何把len转成十进制
      ShowMessage(IntToStr(len));//這里顯示的可能就是樓主所說的十進制數據了吧?還是...
    end;
      

  3.   

    var
      len:array[0..3] of byte;
      iValue:integer;
    begin
      Socket.ReceiveBuf(len,4);
      iValue:=PInteger(@len[0])^;
    end;
      

  4.   

    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;
    //***************************把一个字符转化成十六进制*********************//