-2

我有一个问题,我正在尝试读取图像文件,在该文件中具有列数和行数,并且我正在尝试仅读取此信息以创建像素矩阵。例如:char numb[2]; numb[0]='1'; numb[1]='0'; 我正在尝试转换为 int numb=10; 谢谢

4

2 回答 2

3

如果它始终是 2 位数字:

int n = (numb[0] - '0')*10 + (numb[1] - '0');

或者您可以声明char numb[3], 以便numb[0]='1', numb[1]='0', numb[2]='\0'(基本上,将其转换为以 null 结尾的字符串)并使用strtol

int n = strtol(numb, NULL, 10);
于 2013-10-23T21:31:50.700 回答
2

我建议这样的开始:

if (isdigit(numb[0]) && isdigit(numb[1])) {
    int val = (numb[0] - '0') * 10 + (numb[1] - '0');
}

另一种方法是:

char str[3] = { numb[0], numb[1], '\0' };
char* enptr;
int val = strtol(str, &endptr, 10);

if (*endptr != '\0')
    /* failed to convert */ 

但它与前一种方法相比几乎没有什么好处(在这种特殊情况下)

于 2013-10-23T21:30:05.103 回答