Einzelnen Beitrag anzeigen

fortuneNext

Registriert seit: 11. Aug 2007
Ort: Neuss
133 Beiträge
 
Delphi 7 Enterprise
 
#22

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

  Alt 4. Mär 2009, 16:02
Ah okay, dann hab ich das mit dem SHR und $ff auch verstanden.
Mit diesen 100en von Typkonvertierungen und Endians komm ich aber immernoch durcheinander. Von Dez auf Bin, von da wieder auf dez, um dann wieder auf hex zu kommen, und das dann als string ausgeben, der statt LE dann BE sein muss...

Mein nächster Versuch hätte wohl so ausgesehen:

Delphi-Quellcode:
function LEtoBE(i: string): string;
ASM
  BSWAP EAX
end;


  Result := LEtoBE(IntToHex((h0) mod 256, 2)) + LEtoBE(IntToHex((h0 div 256) mod 256, 2)) + LEtoBE(IntToHex((h0 div 65536) mod 256, 2)) + LEtoBE(IntToHex((h0 div 16777216) mod 256, 2)) +
            LEtoBE(IntToHex((h1) mod 256, 2)) + LEtoBE(IntToHex((h1 div 256) mod 256, 2)) + LEtoBE(IntToHex((h1 div 65536) mod 256, 2)) + LEtoBE(IntToHex((h1 div 16777216) mod 256, 2)) +
            LEtoBE(IntToHex((h2) mod 256, 2)) + LEtoBE(IntToHex((h2 div 256) mod 256, 2)) + LEtoBE(IntToHex((h2 div 65536) mod 256, 2)) + LEtoBE(IntToHex((h2 div 16777216) mod 256, 2)) +
            LEtoBE(IntToHex((h3) mod 256, 2)) + LEtoBE(IntToHex((h3 div 256) mod 256, 2)) + LEtoBE(IntToHex((h3 div 65536) mod 256, 2)) + LEtoBE(IntToHex((h3 div 16777216) mod 256, 2));
Allerdings kommt dort dann überhaupt nichts mehr raus. Also hab ich mir jetzt auch mal die Format() Funktion angesehen - und festgestellt, dass das tatsächlich wesentlich mehr Sinn macht, da eine Hex-Funktion ja bereits eingebaut ist. Meine Lösung wäre deiner dann fast gleich:

Delphi-Quellcode:
  Result := LowerCase(Format('%.2x%.2x%.2x%.2x%.2x%.2x%.2x%.2x%.2x%.2x%.2x%.2x%.2x%.2x%.2x%.2x',
      [(h0 shr 0) mod 256, (h0 shr 8) mod 256, (h0 shr 16) mod 256, (h0 shr 24) mod 256,
       (h1 shr 0) mod 256, (h1 shr 8) mod 256, (h1 shr 16) mod 256, (h1 shr 24) mod 256,
       (h2 shr 0) mod 256, (h2 shr 8) mod 256, (h2 shr 16) mod 256, (h2 shr 24) mod 256,
       (h3 shr 0) mod 256, (h3 shr 8) mod 256, (h3 shr 16) mod 256, (h3 shr 24) mod 256]));
Mit dieser Formulierung denke ich, fällt es mir an leichtesten, es zu verstehen...


Jedenfalls danke ich für die super Hilfe, das ganze hat mich ein großes Stück weiter gebracht


mfg
fortuneNext
Tim
"Hilfe & Support konnte nicht geöffnet werden. Bitte öffnen sie Hilfe & Support, um das Problem zu beheben."
"No Keyboard found. Press F1 to continue."
  Mit Zitat antworten Zitat