相关疑难解决方法(0)

正确使用strtol

下面的程序将字符串转换为long,但根据我的理解,它也会返回错误.我依赖的事实是,如果strtol将字符串成功转换为long,那么第二个参数strtol应该等于NULL.当我用55运行以下应用程序时,我收到以下消息.

./convertToLong 55
Could not convert 55 to long and leftover string is: 55 as long is 55
Run Code Online (Sandbox Code Playgroud)

如何成功检测strtol的错误?在我的应用程序中,零是有效值.

码:

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

static long parseLong(const char * str);

int main(int argc, char ** argv)
{
    printf("%s as long is %ld\n", argv[1], parseLong(argv[1]));
    return 0;
 }

static long parseLong(const char * str)
{
    long _val = 0;
    char * temp;

    _val = strtol(str, &temp, 0);

    if(temp != '\0')
            printf("Could not convert %s to long and …
Run Code Online (Sandbox Code Playgroud)

c c++

26
推荐指数
3
解决办法
3万
查看次数

在C中有效地将十六进制字符串转换为整数?

在C语言中,什么是十六进制数字字符串转换成二进制最有效的方法unsigned int还是unsigned long

例如,如果我有0xFFFFFFFE,我想要一个intbase10值4294967294.

c performance hex strtol

23
推荐指数
6
解决办法
20万
查看次数

检测strtol失败

如何检测strtol()是否未转换数字?我在下面的简单案例中对它进行了测试并输出了0.现在显而易见的问题是如何区分非转换和0的转换?

long int li1;
li1 = strtol("some string with no numbers",NULL,10);
printf("li1: %ld\n",li1);

****
li1: 0
Run Code Online (Sandbox Code Playgroud)

c

12
推荐指数
1
解决办法
1万
查看次数

Arduino:将字符串十六进制"#FFFFFF"转换为3 int

我完全新的C/C++,我试图找出如何,这将是一个HTML样式的RGB十六进制的形式,如"#FFFFFF",并把它转换成3点的整数瓦尔一个字符串参数转换

我真的不确定在哪里.

c c++ hex arduino

7
推荐指数
1
解决办法
2万
查看次数

将字符串转换为有符号整型

我想将字符串转换为有符号整数。以下是要求。我已将十六进制值作为字符串存储在缓冲区中。现在我想将该值转换为有符号整数。

buf = "fb869e"将其转换为有符号整型。所以 o/p 应该是 -293218。但是当我尝试使用 strtol 进行转换时,我得到 16483998。那么我应该做什么?

c string int signed

4
推荐指数
1
解决办法
1万
查看次数

标签 统计

c ×5

c++ ×2

hex ×2

arduino ×1

int ×1

performance ×1

signed ×1

string ×1

strtol ×1