我想将character array
中的十六进制值转换为integer
。
int main()
{
char arr[5];
arr[0] = 0x05;
int a = atoi(&arr[0]);
cout << "Number = " << a; //output = 0 but i want here value 5
}
答案 0 :(得分:2)
您根本不需要任何转换:
int main()
char arr[5];
arr[0] = 0x05;
int a = arr[0];
}
答案 1 :(得分:1)
您不需要任何转换 - 0x05
已经是整数值。
如果您的C字符串是数字的文本表示,那么1.您必须NUL终止字符串,2。您可以使用strtol()
(或该系列函数的一个成员) :
char arr[] = "0x05";
int n = strtol(arr, NULL, 0);
答案 2 :(得分:1)
atoi有以下签名:
int atoi(const char* buffer);
您正在将非空终止缓冲区传递给您的函数。您的“字符”代码值也是0x05,转换为ACK(确认)。 你的号码已经是5了。 简单地:
std::cout << "Number = " << int(arr[0]);
会给你想要的结果。
答案 3 :(得分:0)
你将0x05分配给char,ascii表告诉0x05不能转换为任何数字,如果没有执行转换,atoi函数返回0。这就是你输出0
的原因