Du bist nicht angemeldet.

Lieber Besucher, herzlich willkommen bei: DeveloperTalk. Falls dies dein erster Besuch auf dieser Seite ist, lies bitte die Hilfe durch. Dort wird dir die Bedienung dieser Seite näher erläutert. Darüber hinaus solltest du dich registrieren, um alle Funktionen dieser Seite nutzen zu können. Benutze das Registrierungsformular, um dich zu registrieren oder informiere dich ausführlich über den Registrierungsvorgang. Falls du dich bereits zu einem früheren Zeitpunkt registriert hast, kannst du dich hier anmelden.

Patrick

Profi

Beiträge: 694

Danksagungen: 168

  • Private Nachricht senden

41

22.05.2012, 20:13

Nein, das ist kein C(++)-Standard und funktioniert auch nicht mit allen Compilern.
Wenn man mit 0en und 1en und binären Zahlen arbeiten will, kann man in C++ zu std::bitset greifen. Da würde dann ein Byte so aussehen:

C/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
#include <iostream>
#include <string>
#include <bitset>
#include <vector>

using namespace std;


typedef bitset<8> byte;
typedef vector<byte*> bytes;


void enDeCrypt(bytes& toEncryptingBytes);


int main(int argc, const char * argv[]) {
    
    bytes someBytes;
    char  tmpChar;
    
    cout << "Bitte geben Sie einzelne Zeichen ein und beenden Sie das letzte mit 0: " << endl;
    
    do {
        cin >> tmpChar;
        if(tmpChar != '0') someBytes.push_back(new byte(static_cast<int>(tmpChar)));
    } while(tmpChar != '0');
    
    enDeCrypt(someBytes);
    
    cout << endl << endl << "Verschluesselt:" << endl;

    for(int i = 0; i < someBytes.size(); i++) 
        cout << someBytes[i]->to_string() << " ";    
    
    
    cout << endl << endl;
    
    
    enDeCrypt(someBytes);
    
    
    cout << "Enschluesselt:" << endl;
    
    for(int i = 0; i < someBytes.size(); i++) 
        cout << someBytes[i]->to_string() << " ";
    
    cout << endl << endl;
    
    return 0;
}



void enDeCrypt(bytes& toEncryptingBytes) {
    
    for(int i = 0; i < toEncryptingBytes.size(); i++)
        byte(toEncryptingBytes[i]->flip());
    
}


Aber da sieht man schön, dass sich das nur lohnt, wenn man wirklich die einzelnen Bits brauch.


PS: Und ja ihr könnt mich foltern dafür, dass ich byte als einen bitset<8> definiert habe und nicht als unsigned char ;)
Ex ungue leonem.

War der Beitrag für dich hilfreich?
Dann drück auf .

cedi

Profi

  • »cedi« ist der Autor dieses Themas

Beiträge: 702

Danksagungen: 78

  • Private Nachricht senden

42

23.05.2012, 19:55

es ist zwar leicht OT, aber interessant :D

Erik

Profi

Beiträge: 1 274

Registrierungsdatum: 22.06.2011

Wohnort: Deutschland ;)

Danksagungen: 307

  • Private Nachricht senden

43

23.05.2012, 20:22

das ist eigentlich einer der am wenigsten OTen posts hier xD
Beste Webite im Internet ( ͡° ͜ʖ ͡°)
xinra.de

cedi

Profi

  • »cedi« ist der Autor dieses Themas

Beiträge: 702

Danksagungen: 78

  • Private Nachricht senden

44

23.05.2012, 21:14

und das ist auch gut so :D