C++ - Verschlüsselung / Datei einlesen

Crash Kid

Erfahrenes Mitglied
Hallo an alle,

ich versuche gerade eine Verschlüsselung für exe-Dateien zu programmieren. Wenn ich jetzt die exe-Datei binär einlese und dann die Dezimalzahl von dem Zeichen haben will
Code:
#include <iostream>
#include <fstream>

using namespace std;

int iZahl1;
int idez;
char cEingabe[1024];
fstream fDatei_ein;

int main()
{
    fDatei_ein.open("eingabe.txt", ios::in | ios::binary);
    if(!fDatei_ein.good())
    {
        cout << "Eingabe-Datei nicht gefunden!" << endl;
    }
    else
    {
        fDatei_ein.read(cEingabe, sizeof(cEingabe));
        
        for(iZahl1 = 0; iZahl1 < strlen(cEingabe); ++iZahl1)
        {
            idez = cEingabe[iZahl1];
            cout << idez << endl;
        }
    }
}

funktioniert das nur bei den ersten 128 Zeichen vom der ASCII-Tabelle. Es gibt ja aber noch weitere Zeichen von 128-255, aber wenn so ein Zeichen kommt bekomme ich immer nur eine negative Zahl.
Hier noch der Link zur Tabelle: http://www.torsten-horn.de/techdocs/ascii.htm

Wie bekomme ich jetzt die wirkliche Dezimalzahl von z.B. dem ö (246) und nicht -10?
Danke schon mal für jede Hilfe...
 
Hi,

z.B. so?

C++:
        for(iZahl1 = 0; iZahl1 < strlen(cEingabe); ++iZahl1)
        {
            idez = cEingabe[iZahl1];
            if ( idez < 0 )
              idez = 256 - idez;
            cout << idez << endl;
        }

Natürlich kannst auch auch aus dem idez ein unsigned int machen, dann kann es nicht negativ werden. Stattdessen solltest du dann aber unsigned char nehmen.
 
Danke.
Das ist mir noch gar nicht so richtig aufgefallen, dass die negativen Zahlen von "hinten" her rauskommen.
Bis jetzt klappt es mal :D
 
Zurück