AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Hex String in Float umwandeln

Ein Thema von Selecta · begonnen am 10. Aug 2005 · letzter Beitrag vom 10. Aug 2005
Antwort Antwort
Selecta

Registriert seit: 13. Okt 2004
22 Beiträge
 
Delphi 7 Architect
 
#1

Hex String in Float umwandeln

  Alt 10. Aug 2005, 15:40
Huhu

Bisher hab ich immer ein Dollarzeichen($) an den Anfang des Strings gestellt und umgewandelt.
StrToInt('$'+'FF');

funktioniert wunderbar

Aber bei StrToFloat('$'+'F00400000A7F') bekomme ich immer einen Fehler.
Ist kein gültiger Gleitkommawert.

Ist die Länge beschränkt?
kann man das anders lösen?

Vielen Dank

Gruss
Selecta
  Mit Zitat antworten Zitat
shmia

Registriert seit: 2. Mär 2004
5.508 Beiträge
 
Delphi 5 Professional
 
#2

Re: Hex String in Float umwandeln

  Alt 10. Aug 2005, 15:57
Code-Library:

http://www.delphipraxis.net/internal...ct.php?t=46356
Andreas
  Mit Zitat antworten Zitat
Selecta

Registriert seit: 13. Okt 2004
22 Beiträge
 
Delphi 7 Architect
 
#3

Re: Hex String in Float umwandeln

  Alt 10. Aug 2005, 16:14
ähm...

Das ist nicht, dass was ich brauche .
Hab das auch schon ausprobiert, aber aus hyroglyphen kommt bei mir nichts raus. ^^
  Mit Zitat antworten Zitat
shmia

Registriert seit: 2. Mär 2004
5.508 Beiträge
 
Delphi 5 Professional
 
#4

Re: Hex String in Float umwandeln

  Alt 10. Aug 2005, 16:25
Zitat von Selecta:
Das ist nicht, dass was ich brauche .
Ich habe auch deine Frage nicht richtig gelesen
StrToFloat erwartet einen String, der nur aus Ziffern, Dezimaltrenner und ggf. Vorzeichen besteht.
Wenn dein Hexstring nicht in einen Integer passt, dann musst du so vorgehen:
Delphi-Quellcode:
function HexStringToFloat(const s:string):Extended;
var
   i : Integer;
begin
   Result := 0;
   for i := 1 to Length(s) do
   begin
      Result := Result * 16.0 + StrToInt('$'+s[i]);
   end;
end;
Andreas
  Mit Zitat antworten Zitat
Selecta

Registriert seit: 13. Okt 2004
22 Beiträge
 
Delphi 7 Architect
 
#5

Re: Hex String in Float umwandeln

  Alt 10. Aug 2005, 16:42
yeah, danke für die schnelle antwort.

Aber hast du deine Funktion getestet?
Ich bekomme eine Fehlermeldung in der nichts drin steht. o_O

Bei dieser Zeile

Result := Result * 16.0 + StrToInt('$'+s[i]);
  Mit Zitat antworten Zitat
shmia

Registriert seit: 2. Mär 2004
5.508 Beiträge
 
Delphi 5 Professional
 
#6

Re: Hex String in Float umwandeln

  Alt 10. Aug 2005, 16:51
Zitat von Selecta:
Aber hast du deine Funktion getestet?
Ich bekomme eine Fehlermeldung in der nichts drin steht. o_O
Ich bastel gerade noch etwas daran rum....
Delphi-Quellcode:
function HexStringToFloat(const s:string):Extended;
var
   i : Integer;
   scale : Extended;
begin
   Result := 0;
   for i := 1 to Length(s) do
   begin
      if s[i] = '.then
         Continue;
      Result := Result * 16.0 + StrToInt('$'+s[i]);
   end;

   scale := 1.0;
   for i := Length(s) downto 1 do
   begin
      if s[i] = '.then
      begin
         Result := Result * scale;
      end;
      scale := scale / 16.0;
   end;
end;
Mein Test:
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
   x : double;
begin
   x := HexStringToFloat(Edit1.Text);
   Edit2.Text := FloatToStr(x);
end;
HexStringToFloat('64.7FFFF') ergibt 100,499999046326; das ist doch richtig, oder ?
Andreas
  Mit Zitat antworten Zitat
brechi

Registriert seit: 30. Jan 2004
823 Beiträge
 
#7

Re: Hex String in Float umwandeln

  Alt 10. Aug 2005, 17:02
ne ich glaub eher das die normale IEEE gleitkommadarstellung umgewandelt werden soll
da hat man dann vorzeichen, mantisse und exponent und das sieht ganz anders aus

für nen single einfach mal typecasten:

single(strtoint($FFFFFFFF));
  Mit Zitat antworten Zitat
Selecta

Registriert seit: 13. Okt 2004
22 Beiträge
 
Delphi 7 Architect
 
#8

Re: Hex String in Float umwandeln

  Alt 10. Aug 2005, 17:12
ouou, mit Nachkommastellen weiss ich das nicht, nicht mehr.

Aber gibts da nicht so ein fractional Format?
Ich glaube, ich hab zu Hause noch Unterlagen zu diesem Thema.
Wenn ich es nicht vergesse, post ich morgen wieder.

Und meine Fehlermeldung konnte ich beheben.

for i := 1 und nicht 0

Danke Vielmals für deine Hilfe
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:22 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz