Forum: Programmieren allgemein
Delphi
by Neutral General,
7. Jul 2017
Korrigierte Version:
function HexToFloat16(hex: String): Single;
function FractionToFloat(frac: Cardinal): Single;
var i: Integer;
begin
Result := 0;
for i:=0 to 10 do
begin
Forum: Programmieren allgemein
Delphi
by Neutral General,
6. Jul 2017
Falls es sich doch um ein 16-Bit Float handeln sollte habe ich mal was gebaut.
Ist sicherlich nicht das schönste auf der Welt, aber funktioniert soweit ich das getestet habe:
EDIT: Diese Version ist fehlerhaft! Ein paar Posts weiter unten ist die korrigierte Version!
function HexToFloat16(hex: String): Single;
function FractionToFloat(frac: Cardinal): Single;
var i: Integer;
...
Forum: Programmieren allgemein
Delphi
by Neutral General,
6. Jul 2017
Ja da bin ich grad was am basteln.. Mal schauen
Forum: Programmieren allgemein
Delphi
by Neutral General,
6. Jul 2017
Das ist was mein Code weiter oben macht. Aber mit Cardinal, statt Word, was aber unterm Strich keinen Unterschied macht.
Das Problem ist, dass ein 16-Bit Float in einem 32-Float nicht den gleichen Wert hat.
Forum: Programmieren allgemein
Delphi
by Neutral General,
6. Jul 2017
Vielleicht waren es auch nur schlechte (zu kurze) Beispiele?
Ich habe es so interpretiert dass er/sie "echte" Floats als Hex-String erhält.
Seine/Ihre Vorgehensweise diese umzuwandeln und dass mein Code das gleiche Ergebnis erzielt scheint das zu bestätigen.
Dass die Ergebnisse nicht so aussehen als wären sie gewollt stimmt wohl.
Es ist wahrscheinlich nicht auszuschließen dass er/sie...
Forum: Programmieren allgemein
Delphi
by Neutral General,
6. Jul 2017
Eh ja, so gehen alle Nachkommastellen verloren und die Zahl ist komplett falsch.
Forum: Programmieren allgemein
Delphi
by Neutral General,
6. Jul 2017
Du kannst folgendes machen:
function HexToSingle(hex: String): Single;
var tmp: Cardinal;
begin
tmp := StrToInt('$' + hex);
Move(tmp, Result, SizeOf(Cardinal));
end;
var f: Single;
begin