Sources
Delphi Russian Knowledge Base
DRKB - это самая большая и удобная в использовании база знаний по Дельфи в рунете, составленная Виталием Невзоровым

Перевод чисел из десятичной в любую другую систему счисления

01.01.2007
{ Фунция представляет число Value в Base-ричной системе счисления,
  Base должно находиться в пределах [1..36] и представляется
  10-ю цифрами [0..9] и 26-ю буквами английского алфавита ['A'..'Z'] }
function Dec2X(const Value, Base: Cardinal): string;
 
  // Функция возвращает символ, соответствующий числу в N-ричной системе
  function GetChar(const N: Cardinal): Char;
  begin
    if N < 10 then
      // для систем счисления от 1 до 10
      Result := Char(N + Ord('0'))
    else
      // для систем счисления выше 10, но не больше 36 ([0..9] + ['A'..'Z'])
      Result := Char(N - 10 + Ord('A'));
  end;
 
var
  V, R: Cardinal;
begin
  Result := '';
 
  if Base <= 1 then
  begin
    // числа можно и в системе, состоящей из одного символа, представлять ;)
    if Base = 1 then
    begin
      // реализуем это
      SetLength(Result, Value);
      FillChar(Result[1], Value, Ord('0'));
      Exit;
    end else
      // а вот других систем счисления быть не может
      raise EConvertError.Create('Основание системы счисления должно быть больше 0');
  end else
    // ограничиваем представление систем счисления 10-ю цифрами и 26-ю буквами
    // английского алфавита
    if Base > 10 + (Ord('Z') + 1) - Ord('A') then
      raise EConvertError.Create('Основание системы счисления должно лежать в пределах от 1 до 36');
 
  // Выполняем преобразование в нужную систему виртуальным делением в столбик
  V := Value;
  repeat
    R := V mod Base;
    V := V div Base;
    Result := GetChar(R) + Result;
  until V < 2; // 2 - минимальная база,
               // то есть в любом случае когда-то "V div Base" будет равно 1
  if V <> 0 then Result := IntToStr(V) + Result;
end;
©Drkb::04060

Автор: s-mike