2017-10-13 11 views
0

でintにASCIIおよび拡張ASCIIに変換する方法:いくつかのコードと私の問題のhttp://www.theasciicode.com.ar/CでのASCII /拡張ASCII文字の(int型で)小数点値(特に拡張するもの)</p> <p>ASCII &拡張ASCIIテーブルを持ってする方法はありますC

例:

int a = (int) 'a'; 
int b = (int) '│'; 

printf("%i\n", a); 
printf("%i\n", b); 

、出力は次のようになります。

97 
14849154 
01 ASCIIテーブルの

、「│」は、通常179

+3

にコード0に対して定義され、 '(INT)「a''はreduntantあります。 '' a''はすでに整数です。 –

+0

[拡張ASCII](https://en.wikipedia.org/wiki/Extended_ASCII#Character_set_confusion)は_one_文字セットではないので、あまり有用な用語ではありません。 –

答えて

3

OP」プラットフォームは、基本的なコーディングセット以外文字列リテラルに関する実装定義された動作を使用しています。

UTF-8エンコード。 OPでプリントアウトとして0xE29482 14849154(10進数)である:'│'はUTF-8としてコード化されたUnicode文字U+2502

あり、それは3バイトのシーケンス0xE2 0x94 0x82とか、ビッグエンディアン順にしています。

int b = (int) '│'; 

注:ASCIIのみFYI 127

+0

はい、ソースの文字セットが実際に何であるか、コンパイラには何が伝えられているのか(そしてコンパイラが実行文字セットとして使用するように指示されていること)は疑問です。それらはすべて意図的にUTF-8である可能性があります。また、実際のソース文字セットがUTF-8である可能性がありますが、コンパイラには別の言い方がされています。全体として、UTF-8はこのプロジェクトの間違いのようです。 –

+0

@tom「実際のソース文字セットはUTF-8です」とは、[エンコーディングと文字セットの違いは何ですか?](https://stackoverflow.com/q/2281646/2410359)が役に立ちます。私は[UTF-8](https://en.wikipedia.org/wiki/UTF-8)はエンコーディングであり、[charset](https://en.wikipedia.org/wiki/Character_encoding)ではないと言います。 – chux

+0

合意されていますが、charsetはエンコーディングのためのさまざまなコンパイラ引数で使用される用語です。 –

関連する問題