2012-12-10 7 views
6

Ich schrieb den folgenden Code:1 Byte Integer-Datentyp

#include <iostream> 
#include <iomanip> 
#include <stdint.h> 

using namespace std; 

int main() 
{ 
    uint8_t c; 

    cin >> hex >> c; 
    cout << dec << c; 

    return 0; 
} 

Aber wenn ich Eingang c — hex 12 — der Ausgang ist auch c. Ich hatte erwartet, 12. Später erfuhr ich, dass:

uint8_t ist in der Regel ein typedef für unsigned char. Es liest also c als ASCII 0x63.

Gibt es eine 1-Byte-Ganzzahl, die sich beim Ausführen von I/O und nicht als Zeichen als Integer verhält?

+1

Nein, es nicht ist, das ist eine Schande –

Antwort

4

Nicht, dass ich weiß.

Sie könnten die E/A mit einem breiteren Integer-Typ ausführen und je nach Bedarf Bereichsprüfung und Casting verwenden.

1

Ich fürchte, ich weiß nicht, von einer Art und Weise entweder, aber eine Hex-Zahl in einen Integer-Typ lesen kann wie folgt erreicht werden:

#include <iostream> 
using namespace std; 

int main() { 
    short c; 
    cin >> std::hex >> c; 
    cout << c << endl; 
    return 0; 
}