Einzelnen Beitrag anzeigen

Klaus01

Registriert seit: 30. Nov 2005
Ort: München
5.755 Beiträge
 
Delphi 10.4 Sydney
 
#2

Re: Hashen: Integerüberläufe, Hornerschema in Delphi

  Alt 14. Sep 2009, 17:59
Hallo,

vielleicht bin ich im falschen Film,

aber warum rechnest Du mit power.
Und h kann meines Erachtens nicht größer als m werden.


Mein Versuch:

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
  s : string;
  i,d,x,m,laenge,h,ergebnis,c : integer;
  pos : integer = 1;

begin

   {Divisionsrestmethode bei Strings

  s speichert den string, i,j zählervariabeln
   power(basis, exponent) = b^exponent, benötigt uses math}


   m := strtoint(edit2.text); //auslesen des Teilers aus einem Editfeld
   s := edit1.Text; // auslesen des strings
   laenge := length(s);
   c:= 1;

   h := ord(s[1]) mod m; // h = s[1] mod m

   for i:= 2 to laenge-1 do
     begin
       //h := (ord(s[pos])*round(power(128,(laenge-c))) mod m) ;
        h := (h * 128 + ord(s[i])) mod m; // h = (h * 128 + s[i]) mod m
    end;

   memo1.Text := intToHex(h,16);

end;
(nicht getestet)

Grüße
Klaus
Klaus
  Mit Zitat antworten Zitat