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