Перевод шестнадцатеричного числа в десятичное число

Задача

Число представленное в шестнадцатеричной системе счисления перевести в десятичную систему счисления.

Решение

 

Алгоритм аналогичен переводу двоичного числа, за исключением того, что цифры обозначенные буквами от A до F следует заменить цифрами от 10 до 15.

Программа на языке Паскаль: 

 

var
    hexa: string; {шестнадцатеричное число}
    n: byte; {его длина}
    ch: char; {цифра очередного разряда как символ}
    digit: byte; {цифра очередного разряда}
    m: byte; {степень 16}
    decimal: integer; {десятичное число}
    i: byte;
 
 
function pow16(m: byte):integer;
var i: byte;
begin
    pow16 := 1;
    for i := 1 to m do
        pow16 := pow16 * 16;
end;
 
begin
    write('Hexadecimal: ');
    readln(hexa);
 
    n := length(hexa);
 
    decimal := 0;
    m := n;
    for i:=1 to n do begin
        ch := hexa[i];
        if ch in ['A'..'F'] then
            case ch of
            'A': digit := 10;
            'B': digit := 11;
            'C': digit := 12;
            'D': digit := 13;
            'E': digit := 14;
            'F': digit := 15
            end
        else
            digit := ord(ch) - ord('0');
        m := m - 1;
        decimal := decimal + digit * pow16(m);
    end;
 
    writeln('Decimal: ',decimal);
 
readln
end.

 

Примечания: 

Существенная часть кода основной ветки программы может быть также оформлена в виде функции.

 

Тема

Процедуры, функции, рекурсии

Уровень

Комбинированные задачи

Добавить комментарий

CAPTCHA
Этот вопрос задается для того, чтобы выяснить, являетесь ли Вы человеком или представляете из себя автоматическую спам-рассылку.
CAPTCHA на основе изображений
Введите символы, которые показаны на картинке.