Показать сообщение отдельно
  #24  
Старый 22.06.2010, 23:25
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,107
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

На (около 30 минут потратил ):

Код:
function Str_IntToBin(AIn : String) : String;
var
  I, J, N : Integer;
begin
  For I := 1 To Length(AIn) Do
    If Not (AIn[i] In ['0'..'9']) Then
      Raise Exception.Create('Input string contains nonnumber characters.');

  Result := '';
  For I := Length(AIn) DownTo 1 Do
    Begin
      N := Ord(AIn[i]) - Ord('0');
      For J := 1 To 4 Do
        Begin
          If (N And 1) = 0
            Then Result := '0' + Result
            Else result := '1' + Result;
          N := N Shr 1;
        End;
    end;
end;

function Str_BinToInt(AIn : String) : String;
var
  I, N : Integer;
  Quad : String;
begin
  If Length(AIn) Mod 4 <> 0 Then
    Raise Exception.Create('Input string contains wrong number of characters.');
  For I := 1 To Length(AIn) Do
    If Not (AIn[i] In ['0'..'1']) Then
      Raise Exception.Create('Input string contains nonnumber characters.');

  Result := '';
  While AIn <> '' Do
    Begin
      N := 0;
      Quad := Copy(AIn,1,4);
      For I := 1 To Length(Quad) Do
        Begin
          N := N Shl 1;
          If Quad[i] = '1' Then N := N Or 1;
        End;
      Result := Result + Chr(N + Ord('0'));
      AIn := Copy(AIn,5,Length(AIn)-4);
    End;
end;
Ответить с цитированием