我有一個變量的無符號字符包含一個值,例如40。 我想要一個int變量來獲取該值。 什麼是最簡單和最有效的方法呢? 非常感謝。無符號字符爲int在C + +
回答
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語氣微弱時,程序員思維更加強硬,可口可樂用真正的糖做成了!呸!孩子們這些日子..!呸!! –
問題是關於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等,您可以編寫
char a = '4';
int ia = a - '0';
/* check here if ia is bounded by 0 and 9 */
請嘗試以下方法之一,它適用於我。如果您需要更具體的演員表,可以查看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. C將無符號字符轉換爲無符號字符:4
- 2. 無符號字符數組與int轉換爲無符號字符
- 3. 將字符串轉換爲無符號long long int C
- 4. 將無符號16位int轉換爲C#中有符號16位int int#
- 5. Java無符號字節[2]爲int?
- 6. 定義默認int爲無符號int
- 7. C - 無符號字符*到字符
- 8. 含無符號的字符和INT的bug C++結構
- 9. 轉換無符號字符到符號的int
- 10. C++字符轉換爲int
- 11. 符號在C中擴展int int
- 12. 將無符號字符> 255轉換爲int
- 13. Arduino十六進制字符串爲無符號long int轉換
- 14. int爲無符號字符*反之亦然
- 15. 增加兩個無符號字符變量,結果爲int
- 16. 在C++中將無符號字符(字節)數組轉換爲無符號短符號
- 17. 將字符串轉換爲C中的無符號字符
- 18. 轉換無符號字符*爲char *字符串C
- 19. C/C++檢查位31是否設置爲無符號int
- 20. 無符號字符在函數調用時自動提升爲int,爲什麼?
- 21. 無符號在C
- 22. unsigned int(32bit)爲無符號long long(64bit)
- 23. 將int轉換爲無符號long long
- 24. C++ - 複製無符號字符*到一個新的無符號字符*數組
- 25. 將字符串轉換爲int在C++
- 26. 4個字符爲int在c + +
- 27. 有無符號和unsigned int
- 28. 「Int」和「無符號整型」
- 29. 如何將無符號的24位int轉換爲帶符號的int並將符號擴展爲32位?
- 30. 在JAVA中將像素從int轉換爲無符號字節
如果我寫的printf( 「C:%X」,c)中,我得到32.然後我寫INT I = c和當我打印的 「i」 我得到50 ! – user1346664
@ user1346664:'%x'以十六進制打印。 32十六進制等於50十進制。改用'%d'。 –
所以真的...... THankss – user1346664