Umwandlung float in einen Hexstring

Anfängerfragen zum Programmieren mit PureBasic.
Langstein
Beiträge: 13
Registriert: 25.09.2008 18:29

Umwandlung float in einen Hexstring

Beitrag 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)
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Re: Umwandlung float in einen Hexstring

Beitrag von ts-soft »

Hexstrings von Floatzahlen oder Hexadezimalbrüche?
Ersteres gibts IMHO nicht.
Benutzeravatar
Thorium
Beiträge: 1722
Registriert: 12.06.2005 11:15
Wohnort: Germany
Kontaktdaten:

Re: Umwandlung float in einen Hexstring

Beitrag 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))
Zu mir kommen behinderte Delphine um mit mir zu schwimmen.

Wir fordern mehr Aufmerksamkeit für umfallende Reissäcke! Bild
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Re: Umwandlung float in einen Hexstring

Beitrag 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 :mrgreen:

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 :lol:
Benutzeravatar
Thorium
Beiträge: 1722
Registriert: 12.06.2005 11:15
Wohnort: Germany
Kontaktdaten:

Re: Umwandlung float in einen Hexstring

Beitrag 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 :mrgreen:

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 :lol:
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.
Zu mir kommen behinderte Delphine um mit mir zu schwimmen.

Wir fordern mehr Aufmerksamkeit für umfallende Reissäcke! Bild
Benutzeravatar
AND51
Beiträge: 5220
Registriert: 01.10.2005 13:15

Re: Umwandlung float in einen Hexstring

Beitrag 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.
PB 4.30

Code: Alles auswählen

Macro Happy
 ;-)
EndMacro

Happy End
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Re: Umwandlung float in einen Hexstring

Beitrag 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ärstring 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 :lol:
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Re: Umwandlung float in einen Hexstring

Beitrag 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 )
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Re: Umwandlung float in einen Hexstring

Beitrag 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 :mrgreen:
hat keine Ähnlichkeit mit den obigen Beispielstring, es gibt keine Buchstaben, es gibt kein Komma
und ich kanns nicht zurückrechnen.
Benutzeravatar
Thorium
Beiträge: 1722
Registriert: 12.06.2005 11:15
Wohnort: Germany
Kontaktdaten:

Re: Umwandlung float in einen Hexstring

Beitrag 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 :mrgreen:
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
Zu mir kommen behinderte Delphine um mit mir zu schwimmen.

Wir fordern mehr Aufmerksamkeit für umfallende Reissäcke! Bild
Antworten