Zitat von
choose:
Hallo hboy,
Zitat von
hboy:
Ausserdem liese sich dieses ord(..) shr...+ord(..) shr...+ord(..) shr... vereinfachen:
var s: string[4];
v: integer absolute s;
selbst unter der Beachtung der Ablage im Speicher (Big Endian vs Little Endian) ist dieser Verleich nicht ganz identisch, weil Du auch bei Strings der Länge 3 immer das bei einer Zuweisung undefinierte vierte Zeichen als Lowbyte des Lowwords des Ints casten würdest...
Mir ist bewusst, dass die vorgestellte Hash-Funktion optimiert werden könnte, insbesondere könnten die Aufrufe von
Upcase durch ein einziges
and ersetzt werdern- darum ging es aber weniger als um die Tatsache, dass auch eine eineindeutige Lösung mit der Komplexität
O(1) für das Problem existiert...
jetzt sei mal nicht so pingelig mit einem verworfenen Ansatz. Dann machste halt noch v:= v and $00FFFFFF;