Seite 1 von 3
Umwandlung float in einen Hexstring
Verfasst: 03.10.2009 22:26
von Langstein
Hallo zusammen,
ich möchte eine Floatzahl (z.B. 72.0) in einen Hexstring z.B. X'42900000' umwandeln. Habe es mit folgenden Programm versucht. Ergebnis ist immer 371FB8, egal welche Realzahl ich verwende.
Hat jemand eine Idee?
Geht das mit Pointer besser?
Code: Alles auswählen
Structure my_data
StructureUnion
byte.c[3];0...3
real_value.f
EndStructureUnion
EndStructure
Dim m.my_data(0)
m(0)\real_value = 72.0
Debug m(0)
Re: Umwandlung float in einen Hexstring
Verfasst: 03.10.2009 22:41
von ts-soft
Hexstrings von Floatzahlen oder Hexadezimalbrüche?
Ersteres gibts IMHO nicht.
Re: Umwandlung float in einen Hexstring
Verfasst: 03.10.2009 23:15
von Thorium
Ich weis zwar nicht wofür das gut sein soll aber hier:
Code: Alles auswählen
Define real_value.f
real_value = 72.0
Debug Hex(PeekL(@real_value))
Re: Umwandlung float in einen Hexstring
Verfasst: 03.10.2009 23:32
von ts-soft
Thorium hat geschrieben:Ich weis zwar nicht wofür das gut sein soll aber hier:
Code: Alles auswählen
Define real_value.f
real_value = 72.0
Debug Hex(PeekL(@real_value))
Was macht dieser Code?
Das ergebnis ist wohl eher kein Hexadezimaler String, geschweige denn ein Hexadezimaler String von einem Float
Vielleicht kann mich ja mal jemand Aufklären wie ein Hexadezimaler Floatstring aussieht,
vielleicht verstehe ich dann, was dieser Code machen soll oder auch nicht.
Und am besten gleich einen Binärstring einer Floatzahl hinzufügen, mit Formeln zum zurückwandeln

Re: Umwandlung float in einen Hexstring
Verfasst: 03.10.2009 23:52
von Thorium
ts-soft hat geschrieben:
Was macht dieser Code?
Das ergebnis ist wohl eher kein Hexadezimaler String, geschweige denn ein Hexadezimaler String von einem Float
Vielleicht kann mich ja mal jemand Aufklären wie ein Hexadezimaler Floatstring aussieht,
vielleicht verstehe ich dann, was dieser Code machen soll oder auch nicht.
Und am besten gleich einen Binärstring einer Floatzahl hinzufügen, mit Formeln zum zurückwandeln

Der Code macht genau das was der Fragesteller wollte. Er gibt genau die Zahl aus, die er als Beispiel angegeben hat. Er hat sich nur etwas unglücklich ausgedrückt. Natürlich ist das keine Kommazahl, es ist ein Hexstring der Binärdaten des Floats. So wie wenn du den Float in eine Datei speicherst und dir die Datei dann mit nem Hexeditor anschaust.
Re: Umwandlung float in einen Hexstring
Verfasst: 04.10.2009 01:21
von AND51
Und am besten gleich einen Binärstring einer Floatzahl hinzufügen, mit Formeln zum zurückwandeln
Natürlich kann man Floatzahlen aus unserem Dezimalsystem in das Binärsystem und damit auch in jedes andere System umwandeln.
Das geht mit dem
Horner-Schema.
Re: Umwandlung float in einen Hexstring
Verfasst: 04.10.2009 01:52
von ts-soft
AND51 hat geschrieben:Und am besten gleich einen Binärstring einer Floatzahl hinzufügen, mit Formeln zum zurückwandeln
Natürlich kann man Floatzahlen aus unserem Dezimalsystem in das Binärsystem und damit auch in jedes andere System umwandeln.
Das geht mit dem
Horner-Schema.
Es geht darum, eine Floatzahl als Hex oder Binär
string zurückzuwandeln.
Es gibt weder hexadezimale Floatzahlenstring, noch binäre Floatzahlenstrings, somit
sind sie auch nicht zurückwandelbar, auch nicht mit einem Hörnchen-Schema

Re: Umwandlung float in einen Hexstring
Verfasst: 04.10.2009 02:01
von Kaeru Gaman
natürlich kann man eine Hexadezimalzahl ebenso mit Nachkommastellen schreiben wie eine Dezimalzahl.
53E,7F ist 5*256 + 3*16 + 14 + 7 * 1/16 + 15 * 1/256
und eine Float im Speicher ist genaugenommen eine Binärzahl in Exponentialdarstellung.
... aber darum ging es wohl nicht, und die StructureUnion war schon der richtige Ansatz.
Code: Alles auswählen
Structure my_data
StructureUnion
Long.l
Float.f
EndStructureUnion
EndStructure
Define m.my_data
m\Float = 72.0
Debug Hex( m\Long )
Re: Umwandlung float in einen Hexstring
Verfasst: 04.10.2009 02:20
von ts-soft
Kaeru Gaman hat geschrieben:natürlich kann man eine Hexadezimalzahl ebenso mit Nachkommastellen schreiben wie eine Dezimalzahl.
53E,7F
Kenne ich nicht, ist auch egal, Dein Code, bzw. der von Thorium ergeben:
42900000
und das ist kein Hexstring von 72.0

hat keine Ähnlichkeit mit den obigen Beispielstring, es gibt keine Buchstaben, es gibt kein Komma
und ich kanns nicht zurückrechnen.
Re: Umwandlung float in einen Hexstring
Verfasst: 04.10.2009 04:10
von Thorium
ts-soft hat geschrieben:
Kenne ich nicht, ist auch egal, Dein Code, bzw. der von Thorium ergeben:
42900000
und das ist kein Hexstring von 72.0

hat keine Ähnlichkeit mit den obigen Beispielstring, es gibt keine Buchstaben, es gibt kein Komma
und ich kanns nicht zurückrechnen.
Das du es nicht zurückrechnen kannst heisst ja nicht das es nicht geht, sondern das dir das Wissen fehlt.
Hier ein Rechner, der das kann:
http://babbage.cs.qc.cuny.edu/IEEE-754/32bit.html