如何将char更改为整数?

时间:2013-06-04 20:52:26

标签: c char type-conversion

我想将char数组的内容复制到int变量或数组中。例如,前五个值必须转到int数组(int x):

char a[] = "123456";

我在其他线程中看到要将char更改为int,我需要这样做:

int x = a[0] - '0';

还有其他方法吗?

如果我想要两个或更多的组中的值,例如12,34和56?

,该怎么办?

如果我没有将它们保存为整数,而是浮点数或其他类型,那该怎么办?

4 个答案:

答案 0 :(得分:2)

将正确大小的字符串部分复制到单独的缓冲区,然后使用strtol()strtod()

答案 1 :(得分:1)

您正在写入轨道,但是如果您想转换为整数数组,那么您 应该使用像

这样的东西
int x[MAX_ELEM];

for(int i =0; i<sizeof(a)/sizeof(char); i++)
{
   x[i] = a[i] -'0';
}

对于其他情况,您需要单独处理。

答案 2 :(得分:1)

你必须做int x = a[0] - '0';的原因是因为C中的字符编码。正在发生的是你从字符中减去编码偏移量。这是一个包含所有编码值的表:UTF-8 encodings。因此int x = a[0] - '0';在您的情况下等同于int x = 49 - 48;,其具有您正在寻找的正确值。使用'0'代替0,您使用的char值为0。

还有其他方法,但这种方式效果很好。要使用其他类型,只需在创建int后进行类型转换。

约翰获得两位数字的方式效果很好。转贴于此处,它是number = 10 * digit1 + digit2

答案 3 :(得分:0)

回答你的问题:

  • 当然,还有其他方法可以做到这一点。您显示的方式将ASCII值转换为它所代表的数字,但还有其他方法。
  • 读入您想要的字符数,将每个字符转换为数字,然后根据number = 10 * digit1 + digit2等数字构造整数。
  • 构造整数后进行类型转换。