Umwandlung von Dezimalzahlen in Dualzahlen!

Also ich hab mit nen Hex Editor eine Datei erstellt. (Inhalt: 0A 91 AB 11 2F 6D 00 9C 55 08 E1) Wenn ich mit getc 0A einlese, dann krieg ich ne 10 Dezimal! Jetzt will ich aber 91 AB, also 2 Byte, einlesen. Da müsste 43921 rauskommen. Mit fgets kann ich 2 Byte einlesen, nur krieg ich dann nen ASCII Zeichen.
 
Versuch es doch mal mit fread(). Da kannst du die Anzahl der zu lesenden Bytes angeben. Besser noch wäre, wenn du dich in den Gebrauch von iostreams (ifstream, ofstream und auch std:.cin und cout) einarbeitest , anstatt diese gemeingefährlichen C-Missgeburten wie fgetc und so weiter zu verwenden.
 
hab ne Lösung gefunden! Ich les beide Bytes mit getc ein. 2 Byte integer = 1.Byte*256 + 2. Byte! Bei meinen Beispiel war das 145*256+171=37291=91AB!

PS: Die 43000 von oben war falsch!
 
Original geschrieben von Kachelator

Das Problem von Dudadidas Code war, dass man nicht einfach ein int zu einem String addiereren kann.

Mach ich doch eigentlich gar nicht, funktioniert aber trotzdem nicht (bzw. meine Version hat bei mir gar nicht compiliert :rolleyes: ). Wenn man nicht mit ostream arbeiten möchte, kann man auch an dualzahl mit der Methode append die Einzen und Nullen anhängen.

@Trendy Andy: Du kannst auch direkt mit fread in eine Variable bestimmter Größe einlesen und diese dann umwandeln. Der 2 Byte-Typ wäre dann short und fread sagst du dann, dass er 2 bytes einlesen und an die Adresse deiner short Variable schreiben soll.
Für 4 Bytes nimmst du dann halt int, für 8 _int64.
Ich würde die Binärfunktion dann noch für die beiden Typen überladen und eine Formatierungsoption einbauen (also halt immer 16 bzw. 32 Ziffern für short oder eben int).
 
Zurück