Entwickler-Ecke

Delphi Language (Object-Pascal) / CLX - binary to float und float to binary konvertierung?


Magic2001 - Mi 17.07.13 16:08
Titel: binary to float und float to binary konvertierung?
Hi,
kann mir bitte jemand erklären wie ich in Delphi XE binary to float und umgekehrt Umwandeln kann?
Ich meine das so wie hier: http://www.binaryconvert.com/result_double.html?hexadecimal=40213EC56D5CFAAD.
0x40213EC56D5CFAAD in 8.62260000000000026432189770276 und anders herum...

Vielen Dank im voraus...


Martok - Mi 17.07.13 16:54

Moin!

Dieses "Binary" ist nur eine Darstellung für die nicht-binären Menschen, intern ist das alles das Gleiche :mahn:


Delphi-Quelltext
1:
2:
3:
4:
5:
var
  d: double;
begin
  d:= 8.62260000000000026432189770276;
  ShowMessage(IntToHex(PInt64(@d)^,16));

Bzw. Single/Integer für die 32bit-Typen.

Andersrum ist natürlich immer interessant, ob eine bestimmte "Zahl" überhaupt als Float-Wert irgendwas sinnvolles ergibt. Die Idee ist aber die gleiche, einfach nur die Daten im Speicher als etwas anderes behandeln.

Viele Grüße,
Martok


Magic2001 - Mi 17.07.13 17:58

Danke, dass funktioniert gut. Aber wie du das mit dem umgekehrten Fall meinst verstehe ich nicht. Hast du da vielleicht auch ein Codeschnipsel ?
Umgekehrt sollte dann eine Float zu Binary sein, in dieser Rechnung funktioniert es auch: http://www.binaryconvert.com/result_double.html?hexadecimal=40213EC56D5CFAAD

Danke!


Gammatester - Do 18.07.13 09:31

user profile iconMagic2001 hat folgendes geschrieben Zum zitierten Posting springen:
Aber wie du das mit dem umgekehrten Fall meinst verstehe ich nicht.
Nicht jedes Double-Binär-Muster stellt eine gültige Dezimalzahl dar! Versuch mal http://www.binaryconvert.com/result_double.html?hexadecimal=7FFF0123456789AB oder http://www.binaryconvert.com/result_double.html?hexadecimal=FFF0000000000000.


Magic2001 - Do 18.07.13 09:39

Das mag sein aber mein programm arbeitet nur mit gültigen werten! da diese vorher wo anders ausgelesen werden und von meinem programm umgewandelt werden sollen.


Gammatester - Do 18.07.13 09:51

NaNs und Infs sind gültige Doublewerte, haben aber halt keine Dezimaldarstellung.