Ver Mensaje Individual
  #5  
Antiguo 24-04-2006
Avatar de seoane
[seoane] seoane is offline
Miembro Premium
 
Registrado: feb 2004
Ubicación: A Coruña, España
Posts: 3.717
Reputación: 26
seoane Va por buen camino
Bien, todo depende del orden en que te manden esos bytes. Me explico:

Tenemos, por ejemplo el numero:

-118.625

Cuya representacion en IEEE es:

11000010 11101101 01000000 00000000

Si te manda los bytes de derecha a izquierda, podemos hacer algo como esto:

Código Delphi [-]
function StrToSingle(Str: String): Single;
begin
  if length(Str) = 4 then
    Result:= PSingle(@Str[1])^
  else
    Result:= 0;
end;

Pero si por el contrario, te manda los bytes de izquierda a derecha tenemos que darles la vuelta primero

Código Delphi [-]
function StrToSingle2(Str: String): Single;
var
  i: integer;
  S: string;
begin
  if length(Str) = 4 then
  begin
    S:= '';
    for i:= 4 downto 1 do
      S:= S + Str[i];
    Result:= PSingle(@S[1])^
  end
  else
    Result:= 0;
end;

Por ultimo te dejo un ejemplo, para que pruebes la funcion:

Código Delphi [-]
var
  s: string;
begin
  // 11000010 11101101 01000000 00000000 = -118.625
  SetLength(s,4);
  s[4]:= #194; //11000010
  s[3]:= #237; //11101101
  s[2]:= #64;  //01000000 
  s[1]:= #0;   //00000000
  ShowMessage(FloatToStr(StrToSingle(s)));
end;

¿Era esto lo que buscabas?
Responder Con Cita