Einzelnen Beitrag anzeigen

Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.168 Beiträge
 
Delphi 12 Athens
 
#21

Re: MD5 Länge einfügen als 64 Bit?

  Alt 3. Mär 2009, 23:20
ich hab's mal etwas zerlegt
Delphi-Quellcode:
Result :=
    Format('%.2x%.2x%.2x%.2x', [(h0 {shr 0}) mod 256,
      (h0 shr 8) mod 256, (h0 shr 16) mod 256, (h0 shr 24) mod 256])
  + Format('%.2x%.2x%.2x%.2x', [(h1 {shr 0}) mod 256,
      (h1 shr 8) mod 256, (h1 shr 16) mod 256, (h1 shr 24) mod 256])
  + Format('%.2x%.2x%.2x%.2x', [(h2 {shr 0}) mod 256,
      (h2 shr 8) mod 256, (h2 shr 16) mod 256, (h2 shr 24) mod 256])
  + Format('%.2x%.2x%.2x%.2x', [(h3 {shr 0}) mod 256,
      (h3 shr 8) mod 256, (h3 shr 16) mod 256, (h3 shr 24) mod 256]);
Delphi-Quellcode:
Result :=
    Format('%.2x%.2x%.2x%.2x', [h0 mod 256,
      (h0 div 256) mod 256, (h0 div 65536) mod 256, (h0 div 16777216) mod 256])
  + Format('%.2x%.2x%.2x%.2x', [h1 mod 256,
      (h1 div 256) mod 256, (h1 div 65536) mod 256, (h1 div 16777216) mod 256])
  + Format('%.2x%.2x%.2x%.2x', [h2 mod 256,
      (h2 div 256) mod 256, (h2 div 65536) mod 256, (h2 div 16777216) mod 256])
  + Format('%.2x%.2x%.2x%.2x', [h3 mod 256,
      (h3 div 256) mod 256, (h3 div 65536) mod 256, (h3 div 16777216) mod 256]);
im Grunde besteht doch LongWord aus 4 Byte

also "shr 0" ist wirklich sinnlos ... aber ab es dringelassen, damit alles "gleich" berechnet wird.

and $ff sorgt dafür, daß nur das niederwertigste Byte im Ergebnis steht.
also wäre das "and $ff" im Susammenhanb mit "shr 24" sinnlos, da dort das höherwertigste Byte an die niederwertigste Stelle verschoben wurde und es somit nix höheres mehr gibt.

Bei IntToHex wird der Wert $00112233 auch so ausgegeben, aber eigentlich müßte es 33221100 sein, da das niederwertigste Byte zuerst kommen muß.

Mit BinToHex würde es richtig dargestellt.


wenn du in meine, von mir mal verlinkten, "optimierteren" Version reinschaust, dann könnte man entdecken, daß ich da sozusagen h0 bis h4 zusammen in einem Array hintereinander hab ... somit kann ich diese alle zusammen/auf_einmal über BinToHex ('ne eigene Version) umwandeln
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat