Страницы

Translate

понедельник, 29 июля 2013 г.

Упражнение 2.З. Напишите функцию htoi(s), которая преобразует последовательность шестнадцатеричных цифр


Упражнение  2.З.  Напишите  функцию  htoi(s),  которая  преобразует  последовательность шестнадцатеричных цифр, начинающуюся с 0х или 0Х, в соответствующее целое. Шестнадцатеричными цифрами являются символы 0…9, а…f, А…F.




#include <stdio.h>

#define IN 1
#define OUT 0;

int htoi(char s[]);

int main()
{
    char hox[4] = {'0', 'x', 'F', 'f'};
    printf("%d\n", htoi(hox));
    return 0;
}


/*htoi(s)*/

int htoi(char s[])
{
    int i, number, indigit, hexdig;
    i = 0;
    if(s[i] == '0')
    {
        i++;
        if(s[i] == 'x' || 'X')
            i++;
    }
    indigit = IN;//внутри числа
    number=0;//результат функции htoi
    for(;indigit == IN; i++)
    {
        if(s[i] >= '0' && s[i] <= '9')
            hexdig = s[i] - '0';//принимает значение между 0 и 15
        else if(s[i] >= 'a' && s[i] <= 'f')
            hexdig = s[i] - 'a'+ 10;
        else if(s[i] >= 'A' && s[i] <= 'F')
            hexdig = s[i] - 'A'+ 10;
        else
            indigit = OUT;//вне числа
        if(indigit == IN)
            number = number*16 + hexdig;
    }
    return number;
}

Результат:



1 комментарий: