Число a записано в двоичной системе счисления. Вывести число a в шестнадцатеричной системе счисления
без ведущих нулей.
Вход. Число a, записанное в двоичной системе счисления, 0 < длина числа ≤ 104.
Выход. Выведите
число a, переведённое в
шестнадцатеричную систему счисления, записанное с помощью символов '0', …, '9'
и 'A', …, 'F'.
Пример
входа |
Пример
выхода |
10 |
2 |
элементарная
задача
Прочитаем строку
из 0 и 1 в символьный массив. Выделим четверки символов, начиная с конца. Далее
выведем эти четверки нулей и единиц в виде символов в шестнадцатеричной системе
счисления.
Пример
Рассмотрим число 1101111112 =
1BF16, его длина len = 9.
Стартовой позицией будет start =
len % 4 = 1. Заполняем нулями
ячейки s[1..3].
Строку храним в массиве s.
#define MAX 10010
char s[MAX];
Читаем строку, начиная с 4-ой позиции строки s.
gets(s+4); len =
strlen(s+4);
Вычисляем индекс начала строки.
Дополняем первую четверку нулями.
start = (len %
4) ? len % 4 : 4;
for(i = start; i < 4; i++) s[i] = '0';
Обрабатываем последовательно четверки
символов. Выводим соответствующий символ в шестнадцатеричной системе счисления.
for(i = start; i <= len; i += 4)
{
sscanf(s+i,"%1d%1d%1d%1d",&a,&b,&c,&d);
printf("%X",a*(1<<3)
+ b*(1<<2) + c*(1<<1) + d);
}
printf("\n");