我想将字符数组中的十六进制值转换为整数

时间:2013-05-03 08:35:26

标签: c++

我想将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  
}

4 个答案:

答案 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

的原因