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.
Kommunerne har digitaliseret indgangen for borgerne. Men bag skærmen håndteres mange arbejdsgange stadig manuelt mellem systemer, mails og organisatoriske siloer.
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.