Функция strtol преобразовывает строку в long int. Анализируя строку string, strtol интерпретирует её содержимое в целое число типа long int.
Функция сначала отбрасывает символы пробелов до тех пор, пока не будет найден символ отличный от символа пробела. Затем, начиная с этого символа, функция принимает необязательный начальный знак плюс или минус. После чего, следует последовательность цифр, которая интерпретируется в числовое значение. И, наконец, устанавливается указатель endptr на первый символ, сразу после найденного числового значения.
Если значение basis равно нулю, ожидается распознавание целых чисел, которые формирует последовательность:
Необязательные знаки — плюс или минус
Возможный префикс, указывающий основание, восьмеричное или шестнадцатеричное («0″ или «0x» соответственно)
Последовательность десятичных цифр (если префикс указан в basis) или любая восьмеричная или шестнадцатеричной цифра, если определенный префикс присутствует в строке.
Если значение basis находится между 2 и 36, ожидаемый формат — целое число, представляемое собой последовательность действительных цифр и/или букв в указанном основании системы счисления (начиная от 0 до z / Z для системы счисления 36). В последовательности может присутствовать знак плюс или минус, и, если basis равно 16 — префикс 0x или 0X.
Если первая последовательность не-пробельных символов в строке string не является целым числом, или, если string пустая или содержит только пробельные символы, преобразование не выполняется.
string
Си-строка для выполнения преобразования.
endptr
Ссылка на объект типа char*, значение которой содержит адрес следующего символа в строке string, сразу после предыдущего найденного числа. Если этот параметр не используется, он должен быть нулевым указателем.
basis
Основание системы исчисления.
В случае успеха, функция возвращает целое число преобразованное к типу данных long int.
Если в строке не было найдено целое число, функция возвращает нулевое значение.
Если правильное значение выходит за диапазон принимаемых значений, возвращается LONG_MAX или LONG_MIN, и глобальная переменная ERRNO устанавливается в ERANGE.
Пример перевода из 16-тиричной системы в 10-тичную
long int li1 = strtol("FF", NULL, 10);
char *itoa( int value, char * string, int radix );
Функция itoa преобразует целое число value в строку string в формате radix. К цифрам числа value подбираются ANSI символы типа char и записываются в строку string.
Функция имеет неудобство, заключающееся в том, что при числе, имеющем количество цифр, большее, чем размер строки, функция выдаст ошибку. Поэтому нужно устанавливать размер с запасом.
Также данная функция поддерживается только Visual Studio и в других IDE не имеет описания.
value — преобразуемое число
string — строка, в которую преобразуется число
radix — основание степени счисления
Функция itoa всегда возвращает указатель на string. Чтобы отследить неправильное преобразование, используйте функцию _itoa_s, описание которой:
char *_itoa_s( int value, char * string, int size, int radix );
где size — размер строки string. Данная функция возвращает ноль, если преобразование проходит успешно.
Пример перевода из 10-тичной системы в 16-тиричную
char buffer[32];
itoa(255,buffer,16);