INFO: Dieses Forum nutzt Cookies...
Cookies sind für den Betrieb des Forums unverzichtbar. Mit der Nutzung des Forums erklärst Du dich damit einverstanden, dass wir Cookies verwenden.

Es wird in jedem Fall ein Cookie gesetzt um diesen Hinweis nicht mehr zu erhalten. Desweiteren setzen wir Google Adsense und Google Analytics ein.


Antwort schreiben 

Hex, dez zu floating point umwandeln



Wenn dein Problem oder deine Frage geklärt worden ist, markiere den Beitrag als "Lösung",
indem du auf den "Lösung" Button rechts unter dem entsprechenden Beitrag klickst. Vielen Dank!

16.05.2008, 14:02 (Dieser Beitrag wurde zuletzt bearbeitet: 16.05.2008 14:09 von joe1234.)
Beitrag #1

joe1234 Offline
LVF-Gelegenheitsschreiber
**


Beiträge: 136
Registriert seit: Sep 2007

2010
2007
kA


Deutschland
Hex, dez zu floating point umwandeln
Hi,
hat jemand eine Idee wie man eine Hex-Zahl in eine Fließkommazahl umwandelt/darstellt?

Bsp:
42F66B85=

Sign Bit Exponent Field Significand
0 10000101 1 .11101100110101110000101

=123.21

Ich erhalte also einen Hex-Wert. Dieser ist ein REAL32-Wert, also ein floating point. Nun müsste ich das so umwandeln, dass ich einen Dezimal-Wert erhalte.
Also mich interessiert eigentlich nur der Dezimal-Wert.

Gruß Joe
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Anzeige
16.05.2008, 14:28
Beitrag #2

RoLe Offline
LVF-Guru
*****


Beiträge: 1.236
Registriert seit: Jul 2007

-
1997
en

0
Schweiz
Hex, dez zu floating point umwandeln
' schrieb:Bsp:
42F66B85=

Sign Bit Exponent Field Significand
0 10000101 1 .11101100110101110000101

=123.21

Ich erhalte also einen Hex-Wert. Dieser ist ein REAL32-Wert, also ein floating point. Nun müsste ich das so umwandeln, dass ich einen Dezimal-Wert erhalte.
Also mich interessiert eigentlich nur der Dezimal-Wert.

Wie erhälst du deinen Wert, als String?
Was soll da Resultat sein, ein SGL/DBL?

Ich verstehs nicht so ganz.

.·´¯)--> Leben ist das, was dir passiert, wenn du eifrig dabei bist andere Pläne zu machen <--(¯`·.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
16.05.2008, 14:51
Beitrag #3

joe1234 Offline
LVF-Gelegenheitsschreiber
**


Beiträge: 136
Registriert seit: Sep 2007

2010
2007
kA


Deutschland
Hex, dez zu floating point umwandeln
' schrieb:Wie erhälst du deinen Wert, als String?
Was soll da Resultat sein, ein SGL/DBL?
Ich verstehs nicht so ganz.

Nein, ich erhalte den Wert als einen INT32 (REAL32)-Wert in hex. Nicht als Strung! Der Wert vom Format REAL32 besteht aus einem
Vorzeichen Bit (Sign Bit) -> Länge: 1 Bit
Exponenten (Exponent) -> Länge: 8 Bit
Mantisse (Field Significand) -> Länge: 23 Bit

insgesamt ist die Zahl 32 Bit lang. Nach der Umrechnung sollte es dann eine Kommazahl sein, also ein DBL-Wert.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
16.05.2008, 16:27 (Dieser Beitrag wurde zuletzt bearbeitet: 16.05.2008 16:29 von IchSelbst.)
Beitrag #4

IchSelbst Offline
LVF-Guru
*****


Beiträge: 3.697
Registriert seit: Feb 2005

11, 14, 15, 17, 18
-
DE

97437
Deutschland
Hex, dez zu floating point umwandeln
' schrieb:Nein, ich erhalte den Wert als einen INT32 (REAL32)-Wert in hex.
HEX ist eine Darstellungsform, kein Speicherformat.

Int32 ist ein Speicherformat genauso wie R32. Beide unterscheiden sich. Du kannst also nicht sagen "ich erhalte den Wert als einen INT32 (REAL32)-Wert".

Int32 kann man darstellen als HEX, DEZ, BIN etc. Auch R32 kann man darstellen - als HEX, FLOAT, BIN etc.

Ein R32 ist 32 Bit lang, da hst du recht. Auch das Format (Länge von Vorzeichen, Exponent, Mantisse) ist bekannt (ich gehe davon aus, dass das, was du angegeben hast, der Standard ist)

Uns interessiert aber: Wo kommt der Wert her? Aus einer RS232, die dann einen String liefert? Oder ist die Zahl in einem Anzeige/Bedien-Element hinterlegt vom TYP INT32, TYP SINGLE? Beachte hier "TYP"!

Also: Wie ist die Zahl gespeichert? Bedenke: HEX ist kein Speicherformat (genauso wenig wie ASCII, EBDCI etc.). Int32, Single (R32), Double (R64), String etc sind Speicherformate.

Jeder, der zur wahren Erkenntnis hindurchdringen will, muss den Berg Schwierigkeit alleine erklimmen (Helen Keller).
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
16.05.2008, 17:04
Beitrag #5

BerndDasBrot Offline
LVF-Gelegenheitsschreiber
**


Beiträge: 128
Registriert seit: Feb 2008

8.2.1, 2012, 2017, 2020
2007
EN

7206
Schweiz
Hex, dez zu floating point umwandeln
' schrieb:Hi,
hat jemand eine Idee wie man eine Hex-Zahl in eine Fließkommazahl umwandelt/darstellt?

Bsp:
42F66B85=

Sign Bit Exponent Field Significand
0 10000101 1 .11101100110101110000101

=123.21

Ich erhalte also einen Hex-Wert. Dieser ist ein REAL32-Wert, also ein floating point. Nun müsste ich das so umwandeln, dass ich einen Dezimal-Wert erhalte.
Also mich interessiert eigentlich nur der Dezimal-Wert.

Gruß Joe

Hallo Joe

Kann man nicht einfach mit rechter Maustaste->Properties->Format and Precision das Format von Hexadecimal auf Floating point umschalten?

Oder habe ich Dich nicht richtig verstanden?

BDB
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
16.05.2008, 17:45 (Dieser Beitrag wurde zuletzt bearbeitet: 16.05.2008 17:45 von jg.)
Beitrag #6

jg Offline
CLA & CLED
LVF-Team

Beiträge: 15.864
Registriert seit: Jun 2005

20xx / 8.x
1999
EN

Franken...
Deutschland
Hex, dez zu floating point umwandeln
' schrieb:Nein, ich erhalte den Wert als einen INT32 (REAL32)-Wert in hex. Nicht als Strung! Der Wert vom Format REAL32 besteht aus einem
Vorzeichen Bit (Sign Bit) -> Länge: 1 Bit
Exponenten (Exponent) -> Länge: 8 Bit
Mantisse (Field Significand) -> Länge: 23 Bit

insgesamt ist die Zahl 32 Bit lang. Nach der Umrechnung sollte es dann eine Kommazahl sein, also ein DBL-Wert.
Das hört sich sehr nach dem internen (binärem) Speicherformat eine Single Precision Float nach IEEE an.

http://de.wikipedia.org/wiki/Gleitkommazahl

LabVIEW speichert eine Single Precision genauso:

   

Jetzt ist die Frage, wo kommt deine R32 her:
Aus einem (binärem) File, dann musst du nur das VI "Read from Binary File" nehmen.

Ansonsten per Type Cast wandeln (und es langt vollkommen, in SGL zu wandeln, mehr Info enthält deine R32 auch nicht):

   

MfG, Jens

Wer die erhabene Weisheit der Mathematik tadelt, nährt sich von Verwirrung. (Leonardo da Vinci)

!! BITTE !! stellt mir keine Fragen über PM, dafür ist das Forum da - andere haben vielleicht auch Interesse an der Antwort!

Einführende Links zu LabVIEW, s. GerdWs Signatur.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
19.05.2008, 12:27
Beitrag #7

joe1234 Offline
LVF-Gelegenheitsschreiber
**


Beiträge: 136
Registriert seit: Sep 2007

2010
2007
kA


Deutschland
Hex, dez zu floating point umwandeln
Hi,
ich danke euch allen für die Antworten bzw. Fragen. Erstmal einige Erläuterungen:

Wo kommt die Zahl her?
Die Zahl wird soll eine Temperatur darstellen und wird von einer Platine mit einem USB-to-CAN (Marke: IXXAT) ausgelesen. Zu diesem USB-to-CAN gibt es schon ein Beispielprog. im Netz. Dabei sieht die Anzeige so aus:

   

Wie man sieht, gibt der USB-to-CAN im Feld "Data" Werte als Hex aus. Diese sind alle vom TYP U16. Da es insgesamt 8 Byte
(8x1 Byte) sind und ich nur die ersten 4 Byte nutzen möchte, fasse ich die 4x1 Byte zu einer Zahl (32 Bit = 4 Byte) zusammen. Nun gibt mir diese Zahl eine Temperatur, sowie Jens es beschrieben hat, an.
Und tatsächlich mit dem Symbol "Typenumformung" lässt sich die Zahl als in eine Dezimalzahl umformen.

Ich hoffe, dass es jetzt mehr verständlich ist und Sorry für die schlechte Erklärung am Anfang des Threads.

Gruß Joe
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
19.05.2008, 16:43 (Dieser Beitrag wurde zuletzt bearbeitet: 19.05.2008 16:46 von Lucki.)
Beitrag #8

Lucki Offline
Tech.Exp.2.Klasse
LVF-Team

Beiträge: 7.699
Registriert seit: Mar 2006

LV 2016-18 prof.
1995
DE

01108
Deutschland
Hex, dez zu floating point umwandeln
Die Vermutung von Jens kann ich nur bestätigen:
String to U32, dann Typkonvertierung zu SGL
   
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
21.05.2008, 10:44
Beitrag #9

joe1234 Offline
LVF-Gelegenheitsschreiber
**


Beiträge: 136
Registriert seit: Sep 2007

2010
2007
kA


Deutschland
Hex, dez zu floating point umwandeln
' schrieb:Die Vermutung von Jens kann ich nur bestätigen:
String to U32, dann Typkonvertierung zu SGL
[attachment=39829:HexToFloat.png]

Ich habe direkt eine I32-Zahl und dann Typenkonvertierung zu SGL.

Gruß Joe
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
21.05.2008, 13:16 (Dieser Beitrag wurde zuletzt bearbeitet: 21.05.2008 13:16 von Lucki.)
Beitrag #10

Lucki Offline
Tech.Exp.2.Klasse
LVF-Team

Beiträge: 7.699
Registriert seit: Mar 2006

LV 2016-18 prof.
1995
DE

01108
Deutschland
Hex, dez zu floating point umwandeln
' schrieb:Ich habe direkt eine I32-Zahl und dann Typenkonvertierung zu SGL.
Heißt das jetzt, daß das Problem gelöst ist, oder daß wir hier noch mit verfeinerten Vorschlägen aufwarten sollen?
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Antwort schreiben 


Möglicherweise verwandte Themen...
Themen Verfasser Antworten Views Letzter Beitrag
  2er Kompliment 12bit fix-point integer Slev1n 4 5.870 24.11.2015 10:59
Letzter Beitrag: Lucki
  Verdrahtung Floating Sources Schwand 2 3.699 13.10.2010 12:13
Letzter Beitrag: Schwand
  create Point?!?! caveman 1 3.201 22.09.2006 08:38
Letzter Beitrag: thomas.sandrisser
  Power Point aus LabVIEW 8 starten und beenden bua 6 6.464 29.03.2006 11:52
Letzter Beitrag: bua

Gehe zu: