我有一个变量的无符号字符包含一个值,例如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