如何将字符串转换为无符号整型?C - 将字符串转换为无符号整型
我知道strtoul()
从字符串转换为unsigned long int
,但我想正常int
而不是long int
。
我一直没能找到这样做的功能。
如何将字符串转换为无符号整型?C - 将字符串转换为无符号整型
我知道strtoul()
从字符串转换为unsigned long int
,但我想正常int
而不是long int
。
我一直没能找到这样做的功能。
但我想正常[无符号] int和不长] [无符号] int。
你想用strtoul()
,将其分配给long unsigned int
,测试结果为在[0..UINT_MAX]
的范围内,如果是这样的话分配long unsigned int
到unsigned int
。
刚刚经过测试,发现strtoul
转换为等于UINT_MAX
的值,所以我猜这是有效的。
可能是因为你在Windows上编程。在这个平台上'sizeof(unsigned int)== sizeof(unsigned long)',所以'strtoul'的确能完成这项工作。在更一致的64位平台上,alk的解决方案要优越得多。 – chqrlie
有'atoi',但它没有错误检查'strtoul'具有相同的方式。你可以使用'strtoul'并检查该值是否低于或等于'UINT_MAX'。 –
使用'sscanf' ... – BLUEPIXY
@BLUEPIXY:'sscanf'不一定对小于'long'的类型执行正确的范围检查。 – chqrlie