私は、例えば40のような値を含む変数unsigned charを持っています。 int変数がその値を取得したい。 これを行う最も単純で効率的な方法は何ですか? ありがとうございます。C++のunsigned charからintへ
答えて
unsigned char c = 40;
int i = c;
おそらくそれよりもあなたの質問に多く存在しなければならない...
Google通常便利なツールですが、答えは非常に簡単です:
unsigned char a = 'A'
int b = a
char *a="40";
int i= a;
値'a'には40のASCII値が入ります(40にはなりません)。この関数は、文字列のためにあるので
は、代わりに
ちょうど注意するstdlib.hで定義されたstrtolは()関数を使用してみてください。それは文字のために動作しません
'a'(と' i')*の値は、あなたが今割り当てた値であるので、40になります。 –
コンパイラの警告を無視すると、 'i'が文字列" 40 "が格納されているアドレスを取得することがわかります。もちろん、 'a'にはそのアドレスが格納されています。ああ、その愚かなANSI標準の事の前に、良いオレの前に戻ってきます.Cが弱く型付けされたとき、プログラマーはより強い心を持ち、コカコーラは本当の砂糖で作られました!バハ!最近の子供たち..! Bah !! –
質問はunsigned charに関するものでした。なぜあなたはchar *を使用していますか? – Aamir
実際には、これは暗黙のキャストです。つまり、値がオーバーフローまたはアンダーフローしないように自動的にキャストされます。
これは一例です:
unsigned char a = 'A';
doSomething(a); // Implicit cast
double b = 3.14;
doSomething((int)b); // Explicit cast neccesary!
void doSomething(int x)
{
...
}
double-> intのために明示的なキャストが必要なのはなぜですか?それは暗黙のうちに切り捨てられませんか? – chris
はい、そうですが、コンパイラの警告が表示されるので、そうすることをお勧めします。 – bytecode77
奇妙なことに、私はGCCの最高レベルの警告を受け取りません。 – chris
はあなたが何をしたいかによって異なります。
ASCIIコードとして値を読み取るために、あなたは変換すること
char a = 'a';
int ia = (int)a;
/* note that the int cast is not necessary -- int ia = a would suffice */
を書くことができます文字 '0' - > 0、 '1' - > 1などを書くことができます。
以下のいずれかを試してみてください。より具体的なキャストが必要な場合は、Boostのlexical_castとreinterpret_castを確認することができます。
unsigned char c = 40;
int i = static_cast<int>(c);
std::cout << i << std::endl;
または:
unsigned char c = 40;
int i = (int)(c);
std::cout << i << std::endl;
- 1. unsigned char 16進数からint decへの変換C++
- 2. C++のunsigned charへのキャスト
- 3. cのunsigned char *からconst char *へのキャストコストアドレッシングポインタ?
- 4. unsigned char *をcのunsigned int *に変換する方法は?
- 5. c#のC++からのunsigned char配列#
- 6. ByteArrayからunsigned charへの変換*
- 7. Arduino unsigned long int to char *
- 8. Objective-Cのunsigned char *からchar *へのキャストの動作を定義
- 9. C++でのIntへのchar?
- 10. Java ArrayindexOutofBoundsException charからintへ
- 11. Arduino: `I2CRW :: readByte(unsigned char、unsigned char) 'への未定義の参照。
- 12. (int)(unsigned char)(x)はCで何をしますか?
- 13. Marshal unsigned char ** in c#
- 14. int to unsigned char *およびその逆
- 15. C++のコンストラクタchar *からint []/int *
- 16. win32のCプログラミングでchar *をunsigned intに変換する方法
- 17. はunsigned char *のSymbian C++
- 18. C constの配列unsigned char [] []
- 19. テンプレートパラメータにunsigned int型へのconst unsigned int型の変換
- 20. unsigned int mysql in C#
- 21. C#unsigned intデフォルト値
- 22. unsigned char(配列)をunsigned int(配列)に変換する
- 23. スカラーcharからintへの変換
- 24. cが<unsigned char型>
- 25. C - int型の配列からchar *への変換
- 26. C++エラー: 'int'から 'const char *'への無効な変換[-fpermissive] |
- 27. ダブルからunsigned int [2]?
- 28. stdコンテナからベクタ<unsigned char>(バイナリデータ)とバックへの変換
- 29. 'void *'から 'unsigned char *'への無効な変換
- 30. なぜunsigned char << unsigned charの結果がunsigned charではない
私はprintf関数を記述する場合( "C:X%" は、C)Iは32、私はINT I = Cを書き込む取得し、私が印刷するとき、 "i" はI 50を取得! – user1346664
@ user1346664: '%x'は16進数で表示されます。 32の16進数は50の小数に等しくなります。代わりに '%d'を使用してください。 –
本当に... THankss – user1346664