我想将 中的十六进制值转换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
}
我想将 中的十六进制值转换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
}
您根本不需要任何转换:
int main()
char arr[5];
arr[0] = 0x05;
int a = arr[0];
}
您不需要任何类型的转换 -0x05
已经是一个整数值。
如果你有一个 C 字符串,它是数字的文本表示,那么 1. 你必须 NUL 终止字符串,2. 你可以使用strtol()
(或该函数系列的一个成员):
char arr[] = "0x05";
int n = strtol(arr, NULL, 0);
atoi 具有以下签名:
int atoi(const char* buffer);
您正在将非空终止缓冲区传递给您的函数。此外,您的“字符”代码值是 0x05,它转换为 ACK(确认)。您的号码已经是 5。简单地说:
std::cout << "Number = " << int(arr[0]);
会给你你想要的结果。
您将 0x05 分配给 char,ascii 表告诉 0x05 不能转换为任何数字,如果没有执行转换, atoi 函数返回 0。这就是为什么你的输出为 0