2012-01-11 125 views
-1

なぜ16進数の0x1Cをオンラインの16進数からasciiに変換しようとすると、空の文字列が得られるのでしょうか?同様に、単純なコードを使用すると、奇妙なシンボルが返されます。しかし、私は0x34のようなものを変換しようとするとうまくいきます。何か案は?16進数をasciiに変換する

+0

印刷可能な文字と印刷不可能な文字を明確にするAsciiテーブルのリストについては、[このリンク](http://web.cs.mun.ca/~michael/c/ascii-table.html)を参照してください。[このリンク](http://www.asciitable.com/)を参照してください。 –

+0

Retagged:C++とは関係ありません。 – Mac

答えて

0

0x1Cはファイルセパレータであるため、「通常」のシンボルとして表示されません。私はthis oneのようなASCIIテーブルを調べることをお勧めします。すべてがa-zA-Z0-9シンボルとして出てくるわけではありません。

+0

偉大な、私はあなたが言ったようにテーブルを見たが、Visual Studioは "19"の代わりに "L"として0x13を表示していますテーブルは何を言って何ですか? – user541597

+0

@ user541597 0x13は「19」を表示せず、19は0x13に相当する小数です。最初の3つの列は異なる基底の等価なコードなので、0x13は10進数で19に相当します。これは8進数で023に相当します。 0x13に対応する実際の文字は「デバイスコントロール3」です。 – Yuushi

1

0x1Cは「ファイルセパレータ」文字です。コントロール(つまり印刷できない)文字なので、表示されるときは通常、何らかの代替グリフが画面に表示されます。一方、0x34は "4"文字であるため、そのままそのまま印刷できます。

0x20(スペース)より前のすべてのASCII文字は、印刷できない制御文字であり、0x1Cと同じ動作を示します。

関連する問題