2016-05-13 5 views
-1
char*new_one_again = (address) 
*new_one_again = 150; 
printf("[%x]", *new_one_again); 
printf("[%d]", *new_one_again); 

output: [ffffff96][-106] 

Ich möchte es drucken [150].C Programmierung Anzahl Darstellung durch% x

Ich weiß, dass die hexadezimale Darstellung die richtige Zahl darstellt, wenn ich die signierten Bits los werde. Allerdings habe ich mich gefragt, ob es irgendwelche Bitoperationen gibt, die ich machen könnte, um 150 oder wirklich irgendeine ganze Zahl zu bekommen, die ich für meine Variable verwende. Ich brauche die Nummer 150 wieder in meinen späteren Funktionen, aber ich bekomme immer die Hexadezimalzahl (eine große Zahl). Gibt es eine Möglichkeit, das zu beheben, so dass ich 150 statt der großen Zahl zurückgegeben werde?

+0

Um ... Du meinst, wie 'int somenum = 150; printf ('% d \ n', somenum); '? –

Antwort

0
int main(int argc, char* argv[]) 
{ 
    unsigned char val ; 
    unsigned char* new_one_again = &val; 
    *new_one_again = 150; 
    printf("[%x]", *new_one_again); 
    printf("[%d]", *new_one_again); 
    return 0; 
} 

Ausgang:

[96][150] 
+0

Vielen Dank! Das habe ich gebraucht! – amay20