Перевод числа из восьмеричной системы счисления в шестнадцатеричную - Free Pascal
Формулировка задачи:
Помогите переделать программу.
Имеется функция перевода из восьмеричной системы счисления в десятичную, необходимо сделать перевод из восьмеричной в шестнадцатеричную.
function OctToDec(s:string) : string; //функция перевода из 8-й в 10-ю var i:integer; r,f:longint; begin r:=0;f:=1; for i:=length(s) downto 1 do begin r:=r+f*(ord(s[i])-48); f:=f*8; end; str(r,OctToDec); end;
Решение задачи: «Перевод числа из восьмеричной системы счисления в шестнадцатеричную»
textual
Листинг программы
procedure TForm1.Button1Click(Sender: TObject); var sOctal, sHex : string; n : Integer; begin sOctal := Edit1.Text; n := Numb2Dec(sOctal, 8); sHex := Dec2Numb(n, 1, 16); ShowMessageFmt('Oct = %s' + sLineBreak + 'Dec = %d' + sLineBreak + 'Hex = %s', [sOctal, n, sHex]); end;
Объяснение кода листинга программы
- В начале процедуры объявляются три переменные: строковая sOctal, целочисленная n и еще одна строковая sHex.
- Значение переменной sOctal устанавливается в текст, введенный пользователем в поле Edit1.
- Целое число n вычисляется с помощью функции Numb2Dec, которая преобразует строку sOctal из восьмеричной системы счисления в десятичную.
- Значение переменной sHex вычисляется с помощью функции Dec2Numb, которая преобразует десятичное число n в строку, представляющую шестнадцатеричную систему счисления.
- Выводится сообщение с тремя частями:
Oct =
+ sOctal +, `Dec = ` + IntToStr(n) +
иHex =
+ sHex + `` (соответственно, восьмеричное число, десятичное число и шестнадцатеричное число).