![]() |
Hex, dez zu floating point umwandeln - Druckversion +- LabVIEWForum.de (https://www.labviewforum.de) +-- Forum: LabVIEW (/Forum-LabVIEW) +--- Forum: LabVIEW Allgemein (/Forum-LabVIEW-Allgemein) +--- Thema: Hex, dez zu floating point umwandeln (/Thread-Hex-dez-zu-floating-point-umwandeln) Seiten: 1 2 |
Hex, dez zu floating point umwandeln - joe1234 - 16.05.2008 14:02 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 Hex, dez zu floating point umwandeln - RoLe - 16.05.2008 14:28 ' schrieb:Bsp: Wie erhälst du deinen Wert, als String? Was soll da Resultat sein, ein SGL/DBL? Ich verstehs nicht so ganz. Hex, dez zu floating point umwandeln - joe1234 - 16.05.2008 14:51 ' schrieb:Wie erhälst du deinen Wert, als String? 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. Hex, dez zu floating point umwandeln - IchSelbst - 16.05.2008 16:27 ' 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. Hex, dez zu floating point umwandeln - BerndDasBrot - 16.05.2008 17:04 ' schrieb:Hi, 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 Hex, dez zu floating point umwandeln - jg - 16.05.2008 17:45 ' schrieb:Nein, ich erhalte den Wert als einen INT32 (REAL32)-Wert in hex. Nicht als Strung! Der Wert vom Format REAL32 besteht aus einemDas 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: [attachment=12557] 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): [attachment=12558] MfG, Jens Hex, dez zu floating point umwandeln - joe1234 - 19.05.2008 12:27 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: [attachment=12584] 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 Hex, dez zu floating point umwandeln - Lucki - 19.05.2008 16:43 Die Vermutung von Jens kann ich nur bestätigen: String to U32, dann Typkonvertierung zu SGL [attachment=12592] Hex, dez zu floating point umwandeln - joe1234 - 21.05.2008 10:44 ' schrieb:Die Vermutung von Jens kann ich nur bestätigen: Ich habe direkt eine I32-Zahl und dann Typenkonvertierung zu SGL. Gruß Joe Hex, dez zu floating point umwandeln - Lucki - 21.05.2008 13:16 ' 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? |