怎样快速做网站,如何修改公司网站内容,电子商务网站建设规划的论文,水果网站推广strtoul()#xff1a;将字符串转为长整型整数 atoi()#xff1a;将字符串转为整型整数 在32位STM32中#xff0c;int是32位的#xff0c;如果字符串是“3123456789”#xff0c;大于0x7fff fff#xff0c;用atoi()函数返回的值就是0x7fff fff#xff0c;而使用strtoul就…strtoul()将字符串转为长整型整数 atoi()将字符串转为整型整数 在32位STM32中int是32位的如果字符串是“3123456789”大于0x7fff fff用atoi()函数返回的值就是0x7fff fff而使用strtoul就能返回正确的值。 http://blog.163.com/xychenbaihuyeah/blog/static/1322296552011631111739570/ 但是下面介绍一个非常常见的问题它会害死人的:unsigned int value 0;value (unsigned)atoi(3000000000);printf(value %u,value);/*在64位机器下value3000000000。然而在32位机器下value2147483647*/这是因为atoi函数内部还是使用strtol实现的那么在atoi内部首先是strtol将3000000000转换成long类型然而在64位机器下long是8字节的最高字节是符号位数据位是7位。而在32位机器下long是4字节的即和int类型是一样的最高字节也是符号位数据位也是3位。所以在strtol已经将3000000000转换时截断为2147483647。如果我们使用strtoul就将不会出现上面的问题。下面我将把我们常用的转换函数贴出来: 转载于:https://www.cnblogs.com/fyp7077/p/8400474.html