将 char* 传递给 atoi [重复]

Posted

技术标签:

【中文标题】将 char* 传递给 atoi [重复]【英文标题】:Passing char* to atoi [duplicate] 【发布时间】:2021-06-09 16:52:01 【问题描述】:

这是场景 -

        #include <stdio.h>
        #include <stdlib.h>
        #include <stdint.h>

        int main()
        
            uint8_t backoff;
            char* value = "300000";
            backoff=atoi(value);
            printf("value = %s\n", value);
            printf("backoff value = %d\n", backoff);

            return (0);
        

输出为 -

        value = 300000
        backoff value = 224

有人可以帮我了解这种转换是如何发生的吗?

【问题讨论】:

300000 不适合 uint8_t 300000 == 0x493e0。 224 == 0xe0 【参考方案1】:

很简单。 uint8_t 的值为 0 到 255。您至少需要 uint32_t(uint16_t 最大 65535)。 224 是适合 8 位整数的真实答案的位。

【讨论】:

以上是关于将 char* 传递给 atoi [重复]的主要内容,如果未能解决你的问题,请参考以下文章

将char数组转换为int数组[重复]

如何将 std::string 传递给需要 char* 的函数? [复制]

将'\'分配给char [重复]

将字符串文字分配给 char* [重复]

C ++ Atoi函数给出错误[重复]

为啥允许将字符串文字分配给 C++ 中 char * 类型的指针 [重复]