2017-03-03 9 views
0

私はそれに値 'done'を格納するCharへのポインタを持っています。Char点から16進値へ

は、私が「行って」の進の値を信じるようになります。しかし656e6f64

を私のテストコードをしようとしたとき:

00000064 

unsigned int test = (unsigned int) *label; 
fprintf(stderr, " label is %08x \n", mop); 

それは、このような値を出力します

私が間違っていることを本当に理解できないのですか?私は間違ってキャスティングですか?何か案は?

+0

「mop」とは何ですか?あなたの問題を正確に突き止めるのに十分ではないので、私はあなたのコードをより多く投稿したいと思います。 –

+0

'char'へのポインタを参照すると、配列全体ではなく* 1つの' char'が得られます。 'int'へのポインタを持つ方が簡単で、' char'ポインタをそのポインタにキャストする方が簡単です。 –

+0

@PaulGriffiths文字列がsizeof(int)よりも長い場合はどうなりますか?短ければどうなる? –

答えて

0

私は今を考えることができる最も簡単な選択肢がある -

int i; 
for (i = 0; label[i] != '\0'; i++) 
    printf("%02x", (int)label[i]); 
printf("\n"); 

これは正確に何をしたい与える必要があります。また、表現上の問題は発生しません。