我有一个变量unsigned char,其中包含一个值,例如40。 我想要一个int变量来获取该值。 最简单和最有效的方法是什么? 非常感谢。
unsigned char c = 40;
int i = c;
假设你的问题不止于此...
你可以尝试以下方法,这对我有效。如果你需要更具体的转换,可以查看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;
int(c)
,而不是C-cast风格:(int)(c)
。 - jaques-sam取决于你想做什么:
要将值作为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 */
实际上,这是一种隐式转换。这意味着如果您的值没有溢出或下溢,它会自动转换。
这是一个例子:
unsigned char a = 'A';
doSomething(a); // Implicit cast
double b = 3.14;
doSomething((int)b); // Explicit cast neccesary!
void doSomething(int x)
{
...
}
char *a="40";
int i= a;
'a'中的值将是40的ASCII值(不会是40)。
相反,尝试使用在stdlib.h中定义的strtol()函数。
只需小心,因为此函数适用于字符串。它不适用于字符。
a
(和 i
)的值将会是40,因为这是你刚刚赋的值。 - Bo Perssoni
得到了存储字符串“40”的地址,这当然就是'a'中所包含的。啊——让人回想起那些 ANSI 标准出现之前的好日子——当 C 语言还是弱类型时,程序员们的思维更加敏锐,可口可乐也是用真正的糖制成的!唉!这些年轻人……唉!! - Bob Jarvis - Слава Україні