Dekodierung von hex-kodierten string mit einem stringstream
Es ist einfach zu hex-kodiert einen string mit einem stringstream, aber ist es möglich, die reverse-und entschlüsseln wird die resultierende Zeichenkette mit einem stringstream?
#include <iostream>
#include <string>
#include <iomanip>
#include <sstream>
int main()
{
std::string test = "hello, world";
std::stringstream ss;
ss << std::hex << std::setfill('0');
for (unsigned ch : test)
ss << std::setw(2) << int(ch);
std::cout << ss.str() << std::endl;
}
Ich bin nicht auf der Suche nach bit Verschiebung der bytes, die direkt oder alte c-Funktionen wie z.B. die scanf-Funktionsfamilie.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Nicht ganz so einfach, wenn man nur einen stream von hexadezimalen Ziffern ohne Trennzeichen. Sie können
std::basic_istream::get
oderstd::basic_istream::read
zu extrahieren, zwei Ziffern in einer Zeit, und verwenden Sie dann z.B.std::es ist
zum konvertieren in eine Ganzzahl, die können dann Typ-gegossen, um einechar
.std::stoi
.Ist es wenn setzen Sie irgendeine Art von Trennzeichen zwischen den zahlen. Nur ein Beispiel, lassen Sie uns beginnen, indem Sie in Ihren code einfügen, ein Leerzeichen zwischen jedem byte der Ausgabe:
Dann schreiben wir ein kleines Programm zu Lesen, dass die Daten von cin, und drucken Sie es aus, wie Charaktere wieder:
Wenn ich diese mit der ersten an den zweiten, ich bekomme
hello, world
als Ausgang.Offensichtlich genug, das Lesen der Daten aus einer
stringstream
arbeitet etwa die gleiche wie das Lesen vonstd::cin
- ich cin, so dass ich nachweisen konnte, wobei Sie Ihren code nahezu unverändert.