[英]Convert char* to int arduino
我在從char中獲取int值時遇到問題。
Serial.println((((char *)“ 3772837903”)); Serial.println(atoi((char *)“ 3772837903”));
3772837903 2147483647
有人可以幫忙嗎? 謝謝
int
是基於AVR的MCU上的16位寬帶符號變量。 您的顯然是32位帶符號變量,因此我認為它是基於ARM的板。
無論如何, 4294967296-1
是無符號整數( uint32_t
)的uint32_t
。 對於int32_t
來說,只有一半,即2147483647
。
關於atoi
:
返回值
成功后,函數將轉換后的整數返回為int值。
如果轉換后的值超出int可表示值的范圍,則它將導致未定義的行為。 如果可能,請參閱strtol以獲取更健壯的跨平台替代方案。
我的猜測是,實際上,這種“未定義的行為”將返回INT_MAX
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.