我有一个变量unsigned char,它包含一个值,例如40。 我想要一个int变量来获取该值。 最简单,最有效的方法是什么? 非常感谢你。
答案 0 :(得分:12)
unsigned char c = 40;
int i = c;
据推测,你的问题必须要多于那个......
答案 1 :(得分:5)
尝试以下其中一项,它对我有用。如果您需要更具体的演员表,可以查看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;
答案 2 :(得分:3)
取决于你想做什么:
将值读作ascii代码,可以写
char a = 'a';
int ia = (int)a;
/* note that the int cast is not necessary -- int ia = a would suffice */
转换字符'0' - &gt; 0,'1' - &gt; 1等,你可以写
char a = '4';
int ia = a - '0';
/* check here if ia is bounded by 0 and 9 */
答案 3 :(得分:2)
实际上,这是一个隐含的演员。这意味着您的值会自动转换,因为它不会溢出或下溢。
这是一个例子:
unsigned char a = 'A';
doSomething(a); // Implicit cast
double b = 3.14;
doSomething((int)b); // Explicit cast neccesary!
void doSomething(int x)
{
...
}
答案 4 :(得分:1)
Google通常是一个有用的工具,但答案非常简单:
unsigned char a = 'A'
int b = a
答案 5 :(得分:-1)
char *a="40";
int i= a;
'a'中的值将是ASCII值40(不会是40)。
而是尝试使用stdlib.h中定义的strtol()函数
请注意,因为此函数适用于字符串。它不适用于角色