我想从char *格式转换为32位整数int32_t,但strtol()返回长。
我不知道我的机器上的长度。 它可能是32位或64位或未来的其他东西。
将string转换为32位整型int32_t的正确和防弹方法是什么? 或者把long转换为int32_t。
是比较_MAX和_MIN常数的唯一和最简单的方法?
将sscanf
与<inttypes.h>
一个格式说明符宏一起使用,例如SCNd32
或SCNi32
:
int32_t i; sscanf(str, "%"SCNd32, &i);
这些都是自C99以来。
char *buf; long val; .... if (1 == sscanf(buf, "%ld", &val) ) { // success! // now we have the data in a long, can do some boundary checking and then put it in an int32_t. } ...