2016-09-14 7 views
-4

Ich versuche, ein int in 4 Bytes zu konvertieren. aus irgendeinem Grund endet es das Hinzufügen einiger Ende an der Sonderzeichen Müll bisC int char Konvertierung fügt garage Zeichen

int _tmain(int argc, _TCHAR* argv[]) 
{ 
    int num = 31070; 

    char arr[4]; 

    arr[0] = num & 0xFF; 
    arr[1] = (num >> 8) & 0xFF; 
    arr[2] = (num >> 16) & 0xFF; 
    arr[3] = (num >> 24) & 0xFF; 

    return 0; 
} 

Hier eine Ausgabe des Debug-Fenster ist, wobei man sehen kann, dass es ^ und y für arr[0] und arr[1]

Debugger output window

fügt

Ich habe Dinge wie Casting versucht, aber immer noch diese Müll Zeichen hinzugefügt bekommen.

+1

Es scheint, die Daten als Zeichen angezeigt wird, da es in Zeichentyp variabel ist. Verwenden Sie einen anderen Debugger oder suchen Sie nach Einstellungen, um sie zu deaktivieren, wenn Sie sie hassen. – MikeCAT

+4

Sie missverstehen die Debugging-Ausgabe. Es sagt nur, dass '94' das Zeichen' '^ '' ist und dasselbe für das andere Zeichen. Es versucht, hilfreich zu sein, indem es Ihnen zusätzliche Informationen gibt. Ignoriere es einfach, wenn es nicht hilfreich für dich ist. – kaylum

+0

Verwenden Sie den Typ "uint8_t". Wenn mit Bits gespielt wird, werden "unsignierte" Typen immer bevorzugt. –

Antwort

4

Das sind keine Müllzeichen. Dies sind die ASCII-Darstellung der Dezimalzahl. Der Debugger zeigt Ihnen nur die ASCII-Darstellung. Geben Sie für 94 und 121 auf dieser Tabelle:

http://www.asciitable.com/

Verwandte Themen