Возврат текста в C

Рейтинг: 0Ответов: 1Опубликовано: 09.05.2011

Есть такая проблема. Нужно перевести число в 16ричную систему счисления. Замену чисел 10-16 на буквы сделал в подпрограмме через switch. Но после выполнения вместо нужной буквы программа возвращает код буквы из ASCI.

Как сделать, чтобы возвращало именно букву?

int iftool(char t)
{
    switch (t) {
    case 0:
        return t = 0;
        break;
    // 
    // ...
    // 
    case 9:
        return t = 9;
        break;
    case 10:
        return t = 'A';
        break;
    case 11:
        return 'B';
        break;
    case 12:
        return t = ('C');
        break;
    case 13:
        return t = ('D');
        break;
    case 14:
        return t = ('E');
        break;
    case 15:
        return t = ('F');
        break;
    }
}

часть которая переводит из 2й в 16 систему.

l=0;
r=1;
m=1;
n=0;
while (l<=k)
{
    n=(n+(number[l]*r));
    if ( m%4==0 || l==k)
    {
        r=1;
        m=1;
        t=n;
        t=iftool(t);
        mas[x]=t;
        n=0;
        printf ("lol-%d",mas[x]);
        x++;
    }
    else
    {
        m++;
        r=r*2;
    }
    l++;
}

Ответы

▲ 4

Frank, я бы Вам посоветовал использовать вместо switch простой массив:

char x16trans[] = {'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'};

и далее (в a - число от 0 до 15):

char x16(int a) { return x16trans[a]; }