Datei auslesen und hexadezimal ausgeben
-
Erst einmal ein freundliches Hallo an alle
Aktuell versuche ich eine Textdatei auszulesen und den Inhalt hexadezimal auszugeben (auf 2 Stellen begrenzt). Das Auslesen klappt soweit wie gewollt nur die Umwandlung ins hexadezimale System bereitet mir Kopfschmerzen.Mein aktueller Ansatz wäre hier den Zeichenwert durch die hexadezimale Basis 16 zu teilen. Was ich danach machen muss will sich mir allerdings noch nicht so ganz erschließen
Das Ding ist das ich aktuell nen Zahlensalat ausgegeben bekomme und jetzt nicht so richtig weiter weiß.#include <iostream> #include <fstream> #include <cstdlib> #include <vector> int main() { std::string dateiname {}; std::cout << "Dateiname fuer Eingabedatei: "; std::cin >> dateiname; std::ifstream quelle(dateiname, std::ios::binary); if (!quelle.good()) { std::cerr << "Datei kann nicht geoeffnet werden !" << std::endl; exit(-1); // Fehlerhafter Abbruch ähnlich return != 0 } char c {}; while (quelle.get(c)) { unsigned char uc = static_cast<unsigned char>(c); unsigned int zahl = static_cast<unsigned int>(uc); const std::string codierung {"0123456789ABCDEF"}; // 48 - 57 (0-9), 65 - 70 (A-F) std::cout << codierung.at(zahl / 16) << ' '; } return 0; }
Die entscheidene Frage ist also was fehlt mir noch denn ich glaube auf dem richtigen Weg zu sein
Edit: Ich hab herausgefunden das ich wohl bislang nur die erste hexadezimale Stelle ausrechne aber einfach das Selbe nochmal ergibt logischerweise nur die erste Stelle.... Frage ist also nun wie bekomme ich die zweite ?
-
@OwnliE sagte in Datei auslesen und hexadezimal ausgeben:
Frage ist also nun wie bekomme ich die zweite ?
Rest! (Modulo bzw.
%
)
Siehe https://en.cppreference.com/w/cpp/language/operator_arithmetic (dort unter "Multiplicative operators")Oder, wenn du schummeln willst, verwende std::hex:
std::cout << std::hex << 30 << '\n';
Gibt aus:1e
-
Danke dir vielmals hab tatsächlich an den Modulo Operator überhaupt nicht mehr gedacht.....