我有问题从char获取int值..这里
Serial.println(((char *)" 3772837903")); Serial.println(atoi((char *)" 3772837903"));
3772837903 2147483647
任何人都可以提供帮助吗? THX
答案 0 :(得分:2)
int
是基于AVR的MCU上的16位宽签名变量。你的显然是一个32位的签名变量,所以我认为它是一个基于ARM的板。
无论如何4294967296-1
是无符号整数(uint32_t
)的最大值。 int32_t
的一半,即2147483647
。
关于atoi
:
返回值
成功时,该函数将转换后的整数作为int值返回。
如果转换后的值超出int的可表示值范围,则会导致未定义的行为。如果可能的话,请参阅strtol以获得更强大的跨平台替代方案。
我的猜测是,在实践中,这种"未定义的行为"将返回INT_MAX
。