Re: irreversible Funktion?!
19. Mai 2008, 20:58
Dein Ergebnis ist ein 32bit-Wert. <<(8n) schiebt einen Wert um n Byte nach links. Was du da tun würdest, wäre einen Integer aus 4 Byte zusammenzusetzen.
i << 24 + i2 << 16 + i3 << 8 + i4 = Ergebnis
i = Ergebnis >> 24
i2 = (Ergebnis >> 16) && 255
i3 = (Ergebnis >> 8) && 255
i4 = Ergebnis && 255
Wenn aber ein i{n} nicht mehr in ein Byte passt, wrapt der Wert dank des + auf das nächste Byte: die Funktion ist nicht mehr umkehrbar.
Beispiel: i = 0, i2 = 0, i3 = 1, i4 = 0 -> Ergebnis = 256
Das selbe nochmal: i = 0, i2 = 0, i3 = 0, i4 = 256 -> Ergebnis 256
Derjenige, der das Ergebnis hat, kann ohne weiteres Wissen nicht zuverlässig sagen, was du gemeint hast - wenn er aber weiss, dass i{n} Bytes sind, kann er das.
|