string to hex-code to byte array
-
Hallo,
gibt es sowas schon in irgendeiner lib?
- string to hex-code
- hex-code to byte array
- string (also Klartext) to byte array
Viele Grüße
-
1: Du willst die Zeichen als Hexadezimale Werte ausgeben lassen?
std::string str = "Hallo Welt"; std::copy( str.begin(), str.end(), std::ostream_iterator<int>( std::cout << std::hex, " " ) );2: In welcher Form liegen die "Hex-Codes" denn vor? Auch als String?
3:
const char* ptr = str.c_str();
-
Und andersrum ?
Ich brauche nämlich GENAU DAS.EDIT: Auch wenns bei mir doch nicht ganz so ist aber wäre ganz nett,
-
@David_pb:
Danke! Zu 2) Für das Lesen auf eine Chipkarte liegen sie mir als BYTE-Array vor
und für das Schreiben muss der String in ein BYTE-Array.
-
wobei BYTE =
typedef unsigned char BYTE
-
Wenn du ein Bytearray hast dann kannst du diese doch einfach in den string kopieren? Oder versteh ich dich falsch? Ggf wär ein Codebeispiel zur Verdeutlichung gut.
-
Fall 1: lesen
typedef unsigned char BYTE; typedef BYTE *LPBYTE; LPBYTE readbuffer; string res; readbuffer = read(); //im readbuffer sind nun hex-daten res = reinterpret_cast<char *>(abyData); //wie dekodiere ich res?Fall 2: schreiben
typedef unsigned char BYTE; typedef BYTE *LPBYTE; LPBYTE sendbuffer; string str = "Das moechte ich verschicken"; copy( str.begin(), str.end(), ostream_iterator<int>( cout << hex, "" ) ); sendbuffer = str; //sowas brauch ich
-
Ich vermute mal, in readbuffer befinden sich Zahlenwerte im Bereich 0 - 2^CHAR_BIT und zwar ganz unabhängig von irgendeinem Zahlensystem. Du hast also schon ein Bytearray.
std::basic_string<> bietet die Methode c_str() an, welche ein C-String liefert.
-
// Append a string to stream void AppendString(const char * str) { LPBYTE stream = (LPBYTE)data; stream += size; memcpy(stream, str, strlen(str)); size += (WORD)strlen(str); WORD tmpSize = size - 6; memcpy(data, &tmpSize, 2); }
-
von welchem Typ ist data und size ?
-
woher kommt size in Zeile 5 "stream += size;"?
-
Du brauchst ja nicht den ganzen code von der Funktion.
LPBYTE stream = (LPBYTE)data; memcpy(stream, str, strlen(str));Will do the job.
-
do not comprehend schrieb:
Du brauchst ja nicht den ganzen code von der Funktion.
LPBYTE stream = (LPBYTE)data; memcpy(stream, str, strlen(str));Will do the job.
Err, du brauchst nur das memcpy, eine linie zu viel kopiert.
-
ok memcpy().
und wie funktioniert das ganze umgekehrt?
Also die ankommenden Daten sind vom Typ LPBYTE und liegen in hex vor.
Wie bekomme ich das in für Menschen lesbaren Klartext?