C: преобразование двоичного в десятичное - PullRequest
1 голос
/ 20 марта 2010

Существует ли какая-либо специальная функция для преобразования двоичных значений в десятичные. такие как (1111-15), (0011-3).

Заранее спасибо

Ответы [ 2 ]

6 голосов
/ 20 марта 2010

Да, функция 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 голос
/ 20 марта 2010

Разобрать его с помощью strtol , затем преобразовать в строку с одной из функций printf . Например.

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

Это выделяет больше места, чем необходимо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...