Да, функция 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
позволяет заметить, когда части строки не могут быть проанализированы как целое число в желаемой базе. Возможно, вы захотите узнать больше об этом, прочитав ссылку, на которую я ссылался выше.