![]() |
Hex String in Float umwandeln
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 |
Re: Hex String in Float umwandeln
|
Re: Hex String in Float umwandeln
ähm...
Das ist nicht, dass was ich brauche :). Hab das auch schon ausprobiert, aber aus hyroglyphen kommt bei mir nichts raus. ^^ |
Re: Hex String in Float umwandeln
Zitat:
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; |
Re: Hex String in Float umwandeln
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]); |
Re: Hex String in Float umwandeln
Zitat:
Delphi-Quellcode:
Mein Test:
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;
Delphi-Quellcode:
HexStringToFloat('64.7FFFF') ergibt 100,499999046326; das ist doch richtig, oder ?
procedure TForm1.Button1Click(Sender: TObject);
var x : double; begin x := HexStringToFloat(Edit1.Text); Edit2.Text := FloatToStr(x); end; |
Re: Hex String in Float umwandeln
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)); |
Re: Hex String in Float umwandeln
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 :wall: Danke Vielmals für deine Hilfe |
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:23 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz