19. november 2002 - 09:53Der 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.
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;
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;
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;
Jeg vil sige at cadamsens function virker, den anden er mærkelig!
Synes godt om
Ny brugerNybegynder
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.