CString -> Float

Protaris

Grünschnabel
Hi,

ich weiß, dass es viele Themen dazu gibt doch keins konnte mir Weiterhelfen.
Nun zu meinem Problem:

Ich habe eine CString Eingabe wo 8 Hexwerte eingegeben werden z.B: CA58100F

Die Umwandlung vom Bereich 00000000-7FFFFF habe ich keine Probleme sobald aber der Bereich zum Negativen übergeht, also ab 800000-FFFFFFF klappt die Konvertierung nicht. Mein Problem liegt darin, glaub ich, dass der Werte-Bereich mir nicht aussreicht.
Das längste ist long und geht von -2147483648 - +214783648, habe auch versucht erst nach unsigned long zu Konvertieren und dann nach Float jedoch ohne Erfolg!
m_strTMSFloat; = CString
m_fIEEEFloat2; = Float-Feld (Ausgabe) muss Float Feld bleiben da auch Rückkonvertierung stattfindet!

this->UpdateData(TRUE);
this->m_strTMSFloat;
this->UpdateData(FALSE);
{
if (this->m_strTMSFloat[0] >= 0x38){
this->UpdateData(TRUE);
this->m_fIEEEFloat2 = (float)(atof((LPCTSTR) this->m_strTMSFloat));
this->UpdateData(FALSE);
}

Dies ist einer der Versuche!! Hab jegliche Befehle benutzt die ich kenne z.B. strtol(); strcpy(); u.s.w.

P.S. kann leider vom Browser der Firma keinen "Codefenster" einfügen.
 
Hallo,

du musst natürlich erstmal wissen, was die Eingabe überhaupt repräsentieren soll. Ist es eine Integer-Zahl musst du auch wissen, ob sie vorzeichenbehaftet ist oder nicht. Anhand dieser Infos kannst du dann den Datentyp auswählen, in den konvertiert werden soll. Solange es nicht mehr als 4 Bytes (wie deiner Beispieleingabe) werden, ist der Datentyp int bzw. long ausreichend.

Die Konvertierung selbst geht mit der stringstream-Klasse aus der STL ganz gut:
C++:
#include <sstream>

// ...

CString str = "CA58100F";

unsigned int nValue;
std::stringstream sstr((LPCTSTR)str);
sstr >> std::hex >> nValue;
Gruß
MCoder
 
Vielen Dank..... :D

muss zugeben dass ich neu in Visual C++ bin.
Student und befinde mich im Praktikum, hatte nicht mal eine Einarbeitungszeit :eek:
und musste gleich ein Fertiggeschriebenes Prog. erweitern....

Danke nochmal, wenn ich 2147483648 vom Wert abziehe habe ich das was ich suche! jetzt muss ich nur noch bei der ausgabe ein Minus davorquetschen...

Bis denne
 

Neue Beiträge

Zurück