Avatar billede pib Nybegynder
19. november 2002 - 09:53 Der er 3 kommentarer og
1 løsning

Konvertering mellem decimal og binær

Hvordan laver man en konvertering mellem dec->bin og omvendt? Det skal være uden at bruge de indbyggede funktioner! Gerne så simpelt og enkelt som muligt.
Avatar billede borrisholt Novice
19. november 2002 - 10:00 #1
function IntToBin(Value: LongInt;Size: Integer): String;
var
    i: Integer;
begin
    Result:='';
    for i:=Size downto 0 do begin
          if Value and (1 shl i)<>0 then begin
                Result:=Result+'1';
        end else begin
                Result:=Result+'0';
        end;
    end;
end;

function BinToInt(Value: String): LongInt;
var
    i,Size: Integer;
begin
    Result:=0;
    Size:=Length(Value);
    for i:=Size downto 0 do begin
          if Copy(Value,i,1)='1' then begin
                Result:=Result+(1 shl i);
        end;
    end;
end;


Jens B
Avatar billede borrisholt Novice
19. november 2002 - 10:07 #2
her i en lidt simpler funktion :

function IntToBin(Value : Integer): String;
var
  i: Integer;
begin
  SetLEngth(Result, 32);
  for i:= 32 downto 0 do
    if Value and (1 shl i)<>0 then
      Result[i] := '1'
    else
      Result[i] := '0'
end;

function BinToInt(Value: String): LongInt;
var
  i,Size: Integer;
begin
  Result:=0;
  Size:=Length(Value);
  for i:=Size downto 0 do
    if Value[i] = '1' then
      Result := Result+(1 shl i);
end;
Avatar billede cadamsen Nybegynder
22. november 2002 - 13:00 #3
Jeg kunne ikke få det andet til at virke men dette virker

function TForm1.IntToBin(Value : Integer): String;
var
  i: Integer;
  activ : boolean;
begin
    activ := false;
  for i:= 31 downto 0 do
    if Value and (1 shl i) = 0 then
    begin
      if activ then
          Result := Result + '0';
    end
    else
    begin
        Result := Result + '1';
        activ := true;
    end;
end;

function TForm1.BinToInt(Value: String): LongInt;
var
  i,Size: Integer;
begin
  Result:=0;
  Size:=Length(Value);
  for i:= 1 to size do
    if Value[i] = '1' then
      Result := result + round(power(2,size - i));
end;

cad
Avatar billede pib Nybegynder
22. november 2002 - 14:55 #4
Jeg vil sige at cadamsens function virker, den anden er mærkelig!
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester