C++ string Hex-zahl zuweisen
-
SITDnow schrieb:
Das mit den Zeichenweise übergeben müsste funzen - aber ich wollte vorher noch mal kucken obs nicht auch kürzer geht ^^
string text = "\x50\x44\x46";
So?
Bin mir aber gerade nicht sicher ob die Notation tatsächlich so in C++ funktioniert.
-
Memphis1978 schrieb:
Wie mache ich das?
Du besorgst dir den Zeichencode des entsprechenden Zeichens aus deinem String und gibst ihn als Hexzahl aus.
int c = "!!"[0]; std::stringstream ss; ss << std::hex << c;
-
Ah danke Registrierter Troll ^^
Das ich da nicht selbst drauf gekommen bin - besonders da ich das schon benutzt habe für deutsche umlaute
-
Hey,
Da wir schon mal beim Thema war - mal noch ne etwas andere Frage:
Nun bekomme ich die hexcode als string übergeben
also ziel ist:
von
string hexcode="0xFF50FF";
nach
string hexstring="\xFF\x50\xFF"umzuwandeln.
Die einzige Möglichkeit die mit auf Anhieb einfällt würde mit 16² if abfragen
enden, pro hex zahl...da gibts doch bestimmt noch ne andere Lösung...
-
Zwei Zeichen, oder?
-
Warum liest Du die Datei nicht in ein std::vector<unsigned char> ein und suchst dann mit Funktionen aus <algorithm>?
Simon
-
SITDnow schrieb:
von
string hexcode="0xFF50FF";
nach
string hexstring="\xFF\x50\xFF"#include <sstream> #include <string> #include <iostream> using namespace std; int main() { string hexcode("0xFF50FF"), hexstring; const string b("/x"); istringstream ss(hexcode); char a, c; ss >> a >> a; while (true) { ss >> a >> c; if (ss.eof()) break; hexstring += b; hexstring += a; hexstring += c; } cout << "Aus " << hexcode << " wird " << hexstring << endl; }
-
SITDnow schrieb:
von
string hexcode="0xFF50FF";
nach
string hexstring="\xFF\x50\xFF"Ich behaupte mal, dass du das nicht wirklich willst. Die Escape-Sequenzen werden ja vom Compiler interpretiert, zur Laufzeit bringt dir so ein String nichts.
Du willst vermutlich eher den Hexcode-String durchlaufen und immer jeweils 2 Hexziffern als ein Byte interpretieren: FF -> 255, 50 -> 80, FF -> 255. Die Bytes kannst du dann an einen String hängen.
-
Mh... ich muss daran arbeiten mich klarer auszudrücken
ich versuchs mal so:string hexcode="0x2521"; string hexstring=hexfkt(hexcode); cout<<"hexcode: "<<hexcode<<" ist hexstring:"<<hexstring<<endl;
Ausgabe:
hexcode: 0x2521 ist hexstring: %!Also die "hexfkt" soll einen hexcode aufnehmen (in "schriftform"), und diesen dann als string übergeben.
das ist ungefähr das selbe als wenn ich
char a='65';
zu
char b=(char) 65; //b='A'
machen wollte.Hm ich glaube das einzige Problem ist das ich die Hexzahl nicht als Zahl sondern eben als Zeichenkette habe...
-
Ich habs jetzt mal jetzt mit Hilfe der Ascii tabelle gelöst...
Obwohl es bestimmt eine wesentlich kürzere/leichtere/bessere/schnellere Lösung gibt. (code könnte auch noch überarbeitet bzw gekürzt etc werden)string hexString(string hexcode) { string hexstring=""; int size=hexcode.length(),y,number; char x[size]; strncpy(x,hexcode.c_str(),size); x[size]='\0'; //remove "0x" if( x[0]=='0' && (x[1]=='x' || x[1]=='X') ) { for(int i=0;i<size;i++) x[i]=x[i+2]; x[size-2]='\0'; size-=2; } //get number for(int i=0;i<size;i+=2) { number=0; y= (int) x[i]-48; if(y>17) y-=7; number+=(y*16); y= (int) x[i+1]-48; if(y>17) y-=7; number+=y; hexstring+= (char) number; } return hexstring; }