C:将二进制转换为十进制

时间:2010-03-20 06:39:17

标签: c

是否有用于将二进制值转换为十进制值的专用函数。 例如(1111至15),(0011至3)。

先谢谢

2 个答案:

答案 0 :(得分:6)

是的,strtol函数有一个base参数可用于此目的。

以下是一些基本错误处理的示例:

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


int main()
{
    char* input = "11001";
    char* endptr;

    int val = strtol(input, &endptr, 2);

    if (*endptr == '\0')
    {
        printf("Got only the integer: %d\n", val);
    }
    else
    {
        printf("Got an integer %d\n", val);
        printf("Leftover: %s\n", endptr);
    }


    return 0;
}

这正确地解析并打印整数25(二进制为11001)。 strtol的错误处理允许注意当字符串的某些部分无法解析为所需基数中的整数时。您可以通过阅读我上面链接的参考资料来了解更多相关信息。

答案 1 :(得分:1)

strtol解析它,然后转换为带有printf函数之一的字符串。例如。

char binary[] = "111";
long l = strtol(binary, 0, 2);
char *s = malloc(sizeof binary);
sprintf(s, "%ld\n", l);

这会分配比所需更多的空间。