2013-04-14 15 views
6

charをそのASCII int値に変換したいと思います。ASCII文字をASCIIのint値に変換するにはどうすればよいですか?

すべての可能な値を配列に入力して比較することができますが、それは私のようには思えません。私は

char mychar = "k" 
public int ASCItranslate(char c) 
return c 

ASCItranslate(k) // >> Should return 107 as that is the ASCII value of 'k'. 

のようなポイントは、それだけで読める数字のためであるとして atoi()が、ここでは動作しませんで何かをしたいと思います。

スペース(ASCII 32)で何もしません。

+0

を試してみました何か?例えば、 'return c;'のように? –

+1

'char mychar =" k "':ああ天国、これは試しましたか? '' k ''はヌルで終了する文字列であり、' char'ではありません。また、 'C++'ステートメントはセミコロンで終わらなければなりません。確かにあなたはこれを知っていますか? – TonyK

答えて

2

これを行う: -

char mychar = 'k'; 
public int ASCItranslate(char c) 
return int(c); 

ASCItranslate(k); // >> should return 107 as that is the ascii value of k 
固定様々な構文エラーのあるあなたの元のコードです
+0

[EBCDIC](http://en.wikipedia.org/wiki/EBCDIC)を使用しているマシンでは動作しません。移植性が求められる場合、より複雑なものが必要です。 –

+1

EBCDICはASCIではありませんが、EBCDICは古いものは、以前のシステムではIBMだけが使用していました。私はMSXでもASCIを持っていたので、これは本当の古いものでなければならないことを覚えています。私はそれを理解しているArduinoで使っています。 – user613326

+0

これはなぜ上向き/受け入れられますか?それは有効なコードでもありません。 –

7

はちょうどこの操作を行います。

int(k) 

はあなただけ、ここで直接intに関数呼び出しの必要性を文字に変換するんです。

5

charは既に数字です。 ASCIIは数値から文字表現へのマッピングなので、変換は必要ありません。

望むならば、それを直接数値として使うこともできますし、キャストすることもできます。

0

C++では、変換を明示的にするためにstatic_cast<int>(k)を使用することもできます。

+1

キャスティングは常に明示的です。キャストを使用すると、**変換**が明示的になります。もちろん、ほとんどの場合、コンパイラは変換を行いますが、キャストはちょうどノイズです。 –

+0

私はコンパイラではなく「プログラマに明示」を意味しました。 – Tisys

+0

それにもかかわらず、それは明示された**変換**です。 **キャスト**は、ソースコードに記述して変換を行うようにコンパイラに指示するものです。キャストは**常に**明示的です。 –

0
#include <iostream> 

char mychar = 'k'; 
int ASCIItranslate(char ch) { 
    return ch; 
} 

int main() { 
    std::cout << ASCIItranslage(mychar); 
    return 0; 
} 

。あなたがASCIIを使用するコンパイラを使用していると仮定すると(これはかなり最近の毎日です)、動作します。なぜそれが間違っていると思いますか? ASCII値から、それに変換するには

char c='A'; 
    cout<<int(c); 

ASCII文字だ:ASCII文字から、それに変換するには

0

ASCII値だあなたは

int a=67; 
    cout<<char(a); 
関連する問題