2016-09-14 16 views
-4

intを4バイトに変換しようとしています。何らかの理由でそれがここでint int to char converstionはガラベリ文字を追加します

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; 
} 

は、あなたはそれがarr[0]ため^yを追加していることがわかりますここデバッグウィンドウの出力とarr[1]

Debugger output window

で終わりにいくつかのゴミの特殊文字を追加して終わります

キャストのようなものを試しましたが、これらのガベージ文字はまだ追加されています。

+1

文字型変数であるため、データを文字として表示されているようです。別のデバッガを使用するか、嫌いな場合は無効にする設定を求めてください。 – MikeCAT

+4

デバッグ出力を誤解しています。 '94 'は文字' '^''で、他の文字と同じです。それはあなたに余分な情報を与えることによって役立つように努力しています。それがあなたのために役立たない場合は、それを無視してください。 – kaylum

+0

'uint8_t'型を試してみてください。ビットで再生するときは、 'unsigned'型が常に優先されます。 –

答えて

4

これらはガベージ文字ではありません。これらは10進数のASCII表現です。デバッガはあなたにASCII表現を表示しています。このテーブルの上に94と121を探します。

http://www.asciitable.com/

関連する問題