在C ++中unsigned char to int

时间:2012-05-12 12:17:14

标签: c++ casting unsigned

我有一个变量unsigned char,它包含一个值,例如40。 我想要一个int变量来获取该值。 最简单,最有效的方法是什么? 非常感谢你。

6 个答案:

答案 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()函数

请注意,因为此函数适用于字符串。它不适用于角色