将char *转换为int arduino

时间:2016-10-15 15:15:50

标签: c++ arduino type-conversion

我有问题从char获取int值..这里

Serial.println(((char *)" 3772837903")); Serial.println(atoi((char *)" 3772837903"));

3772837903 2147483647

任何人都可以提供帮助吗? THX

1 个答案:

答案 0 :(得分:2)

int是基于AVR的MCU上的16位宽签名变量。你的显然是一个32位的签名变量,所以我认为它是一个基于ARM的板。

无论如何4294967296-1是无符号整数(uint32_t)的最大值。 int32_t的一半,即2147483647

关于atoi

  

返回值

     

成功时,该函数将转换后的整数作为int值返回。

     

如果转换后的值超出int的可表示值范围,则会导致未定义的行为。如果可能的话,请参阅strtol以获得更强大的跨平台替代方案。

我的猜测是,在实践中,这种"未定义的行为"将返回INT_MAX