Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 23.09.2011, 20:24
Antimin Antimin вне форума
Прохожий
 
Регистрация: 23.09.2011
Сообщения: 1
Репутация: 10
Восклицание Помогите написать легкую программу

Ввести целое число типа LONGWORD. Получить из каждого байта символ, соответствующий этому числу. Алгоритм преобразования оформить в виде функции.
Исходное число и результат вывести в символьной, двоичной и десятичной форме.
Ответить с цитированием
  #2  
Старый 23.09.2011, 22:43
chainik chainik вне форума
Начинающий
 
Регистрация: 30.06.2008
Сообщения: 140
Репутация: 8882
По умолчанию

Неубиенная тема!!!!!!!!!!!
Я уже раза 3 здесь на форуме отвечал на этот вопрос.
Отвечаю в очередной раз (и думаю что не последний)
В следующем семестре все повторится....
Здесь 2 функции, переводящие числа по любому основанию (M) и обратно

Код:
const
Symb:array[0..15] of char='0123456789ABCDEF';

function StrToIntM(s:string;M:word):int64;
var
i:integer;
begin
s:='0'+Trim(s);
Result:=0;i:=1;
while (i <= Length(s)) and (s[i] in [Symb[0]..Symb[M-1]]) do inc(i);
if i > Length(s) then
    for i:=1 to length(s) do
        case s[i] of
        '0'..'9':Result:=Result*M + ord(s[i])-48;
        'A'..'F':Result:=Result*M + ord(s[i])-55;
        'a'..'f':Result:=Result*M + ord(s[i])-87;
        end    //case
else
Result:=-1;
end;

function IntToStrM(x:int64;M:word):string;
begin
Result:='';
    repeat
    Result:=Symb[x-M*(x div M)]+Result;
    x:=x div M;
    until x <= 0 ;
end;
Ответить с цитированием
  #3  
Старый 23.09.2011, 22:53
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,087
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

Да тут немного другое нужно:

Код:
const
  mByte : Byte = 255;
var
  I : Integer;
  W : DWORD; // 4 байта
  B : Array [0..3] Of Byte;
begin
  For I := 3 DownTo 0 Do
    Begin
      B[i] := W And mByte;
      W := W shr 8;
    End;

  S := '';
  For I := 0 To 3 Do
    S := S + Chr(B[i]);
end;

ну а десятичную и двоичную формы сам сообразишь как.
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 00:56.


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2025