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