我有一个变量 unsigned char 包含一个值,例如 40。我想要一个 int 变量来获取该值。最简单和最有效的方法是什么?非常感谢。
问问题
95415 次
6 回答
18
unsigned char c = 40;
int i = c;
想必您的问题还不止这些……
于 2012-05-12T12:19:05.257 回答
7
尝试以下方法之一,它对我有用。如果您需要更具体的演员表,您可以查看 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;
于 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 回答