15

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

4

6 回答 6

18
unsigned char c = 40;
int i = c;

想必您的问题还不止这些……

于 2012-05-12T12:19:05.257 回答
7

尝试以下方法之一,它对我有用。如果您需要更具体的演员表,您可以查看 Boost 的lexical_castreinterpret_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;
于 2016-02-16T11:00:05.740 回答
2

实际上,这是一个隐式转换。这意味着您的值会自动转换,因为它不会溢出或下溢。

这是一个例子:

unsigned char a = 'A';
doSomething(a); // Implicit cast

double b = 3.14;
doSomething((int)b); // Explicit cast neccesary!

void doSomething(int x)
{
...
}
于 2012-05-12T12:26:41.520 回答
2

谷歌通常是一个有用的工具,但答案非常简单:

unsigned char a = 'A'
int b = a
于 2012-05-12T12:21:39.840 回答
2

取决于你想做什么:

要将值读取为 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 */
于 2014-03-04T17:26:45.183 回答
-1
char *a="40";
int i= a;

'a' 中的值将是 ASCII 值 40(不会是 40)。

而是尝试使用 stdlib.h 中定义的 strtol() 函数

请小心,因为此函数用于字符串。这对角色不起作用

于 2012-05-12T12:25:52.947 回答