CString formatieren
-
Hallo,
ich bekomme das irgendwie nicht gebacken. Ich möchte einen String (CString MFC) formatieren. Und zwar wird dieser zusammengesetzt aus einer ID (2 Zeichen), einem Leerzeichen, einem Wert (4 Zeichen) und einem "\r" und soll z.B. so aussehen:
"10 00AB\r"Die ID habe ich form eines CStrings vorliegen, also strID = "10". Den Wert habe ich auch in einem String, aber nicht in hexadezimal, also z.B. strValue = "171". Und ich muss das eben in hexadezimal haben.
Kann mir da jemand ein Stückcheh Code basteln ? Nochmal das benötigte Format:´
"ID WERT\r", wobei den Wert hexadezimal
Danke
-
Servus,
gucke mal die Beiträge helfen dir bestimmt weiter:
http://www.c-plusplus.net/forum/viewtopic.php?t=60787&highlight=hex
http://www.c-plusplus.net/forum/viewtopic.php?t=58871&highlight=hex
http://www.c-plusplus.net/forum/viewtopic.php?t=56637&highlight=hex
http://www.c-plusplus.net/forum/viewtopic.php?t=49527&highlight=hex
http://www.c-plusplus.net/forum/viewtopic.php?t=44172&highlight=hex
*winke*
Hellsgore
-
ich habe jetzt folgendes hinbekommen:
CString strID = "10"; m_OutAbtastrate.GetWindowText(text); str.Format("%2d %4X", strID , text);in text steht "2000", hexadezimal ist das 7D0, also drei Zeichen. Der String sieht dann so auch : "10**__7D0" -> zwei Leerzeichen zwischen ID und Wert (die Underlines symbolisieren hier die Leerzeichen). Das muss aber eins sein, und die anderen Stellen mit Nullen gefüllt, also so "10_0**7D0"
-
Vielleicht so in der Art:
str.Format("%2d 0%3X", strID , text);
Den Inhalt im Format-Befehl kannst du anpassen, wie du willst.
-
isabeau schrieb:
Vielleicht so in der Art:
str.Format("%2d 0%3X", strID , text);
Den Inhalt im Format-Befehl kannst du anpassen, wie du willst.im prinzip ist es das, was ich brauche. nur ist es nicht immer 3, oder 2 Zeichen, sondern 1 bis 4. Aber das reicht mir auch schon, werde halt ne schleife für die anzahl der nullen einbauen.
danke schön
-
Servus,
brauchst keine Schleife. Wenn du weisst das es nur max 4 Stellen gibt machste das so:
CString strHex = "08D"; switch(strHex.GetLength()) { case 1: strHex = "000" + strHex; break; case 2: strHex = "00" + strHex; break; case 2: strHex = "0" + strHex; break; }oder so
CString strHex = "08D"; CString strOut = ""; for (int i = strHex.GetLength(); i < 4; i++) { strOut += "0"; } strHex = strOut + strHex;Pferdfisch
sollte funzen*winke*
Hellsgore
-
to Hellsgore:
funktioniert natürlich auch, aber vom Umfang viel mehr als das hierfor (int x = 1; x < (4 - value.GetLength()); x++) output += "0"; output += value;dein erster Vorschlag funzt nicht :p
dein zweiter Vorschlag, ist ja eine Schleife
-
hehe oder soo...
habe heute nicht gerade die Lust großartig nachzudenken oder zu testen

Hellsgore