C语言 将char * number转换为int32_t的正确方法



我想将数字从char *格式转换为32位整数int32_t,但是strtol()返回long.

我不知道我的机器上的长度。它可以是32位或64位,或者将来是其他的。

将字符串转换为32位整数int32_t的正确和防弹方法是什么?或者将long转换为int32_t。

比较_MAX和_MIN常数是唯一和最简单的方法吗?

使用sscanf<inttypes.h>的格式说明符宏之一,例如SCNd32SCNi32:

int32_t i;
sscanf(str, "%"SCNd32, &i);

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.
}
...

相关内容

最新更新