加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c – 对于uint32_t和其他stdint类型,atoi或strtoul相当于什么?

发布时间:2020-12-16 03:29:15 所属栏目:百科 来源:网络整理
导读:我正在寻找标准函数将字符串转换为 stdint.h整数,如 int i = atoi("123");unsigned long ul = strtoul("123",NULL,10);uint32_t n = mysteryfunction("123"); // -- ??? 解决方法 有两个常规选项:strto [iu] max,然后检查值是否适合较小的类型,或切换到ssca
我正在寻找标准函数将字符串转换为 stdint.h整数,如
int i = atoi("123");
unsigned long ul = strtoul("123",NULL,10);
uint32_t n = mysteryfunction("123"); // <-- ???

解决方法

有两个常规选项:strto [iu] max,然后检查值是否适合较小的类型,或切换到sscanf. C标准在< inttypes.h>中定义了整个宏系列.扩展到< stdint.h>的适当转换说明符类型. uint32_t的示例:
#include <inttypes.h>
#include <stdio.h>

int main()
{
    uint32_t n;

    sscanf("123","%"SCNu32,&n);
    printf("%"PRIu32"n",n);

    return 0;
}

(在uint32_t的情况下,strtoul溢出检查也适用于uint32_t,因为unsigned long至少为32位宽.对于uint_least32_t,uint_fast32_t,uint64_t等,它不会可靠地工作)

编辑:正如Jens Gustedt在下面所说,这并不能提供strtoul的完全灵活性,因为你无法指定基础.但是,仍然可以分别用SCNo32和SCNx32获得基数8和基数16.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读