Как представить число в другой системе счисленияDelphi , Синтаксис , Типы и ПеременныеКак представить число в другой системе счисленияАвтор: http://www.swissdelphicenter.ch function BaseConvert(NumIn: string; BaseIn: Byte; BaseOut: Byte): string; var i: integer; currentCharacter: char; CharacterValue: Integer; PlaceValue: Integer; RunningTotal: Double; Remainder: Double; BaseOutDouble: Double; NumInCaps: string; s: string; begin if (NumIn = '') or (BaseIn < 2) or (BaseIn > 36) or (BaseOut < 1) or (BaseOut > 36) then begin Result := 'Error'; Exit; end; NumInCaps := UpperCase(NumIn); PlaceValue := Length(NumInCaps); RunningTotal := 0; for i := 1 to Length(NumInCaps) do begin PlaceValue := PlaceValue - 1; CurrentCharacter := NumInCaps[i]; CharacterValue := 0; if (Ord(CurrentCharacter) > 64) and (Ord(CurrentCharacter) < 91) then CharacterValue := Ord(CurrentCharacter) - 55; if CharacterValue = 0 then if (Ord(CurrentCharacter) < 48) or (Ord(CurrentCharacter) > 57) then begin BaseConvert := 'Error'; Exit; end else CharacterValue := Ord(CurrentCharacter); if (CharacterValue < 0) or (CharacterValue > BaseIn - 1) then begin BaseConvert := 'Error'; Exit; end; RunningTotal := RunningTotal + CharacterValue * (Power(BaseIn, PlaceValue)); end; while RunningTotal > 0 do begin BaseOutDouble := BaseOut; Remainder := RunningTotal - (int(RunningTotal / BaseOutDouble) * BaseOutDouble); RunningTotal := (RunningTotal - Remainder) / BaseOut; if Remainder >= 10 then CurrentCharacter := Chr(Trunc(Remainder + 55)) else begin s := IntToStr(trunc(remainder)); CurrentCharacter := s[Length(s)]; end; Result := CurrentCharacter + Result; end; end; // Example, Beispiel procedure TForm1.Button1Click(Sender: TObject); begin BaseConvert('FFFF', 16, 10); // returns, ergibt '65535'. end; Перевод контента на русский язык: Функция Pascal, конвертирующая число из одного основания в другое. Функция принимает три параметра:
Функция сначала проверяет, является ли ввод корректным, то есть если входное число пусто или основания не находятся в допустимом диапазоне. Если ввод некорректен, функция возвращает сообщение об ошибке. Если ввод корректен, функция конвертирует входное число в десятичный формат с помощью функции Вот шаг за шагом, что функция делает:
Пример процедуры в конце демонстрирует, как использовать эту функцию для конвертации hexadecimal числа ( Вот альтернативное решение с более современным подходом:
В этом варианте мы используем функцию В статье описывается алгоритм и функция в Pascal для представления числа в другой системе счисления. Комментарии и вопросыПолучайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта. :: Главная :: Типы и Переменные ::
|
||||
©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007 |