crc32
(PHP 4 >= 4.0.1, PHP 5, PHP 7, PHP 8)
crc32 — Berechnet den polynomischen CRC32-Wert eines Strings
Beschreibung
$string
): int
Berechnet die zyklisch redundante polynomische Prüfsumme mit einer
Länge von 32 Bit für string
. Dies wird gewöhnlich
für die Integritätsprüfung übermittelter Daten verwendet.
Da der Datentyp Integer von PHP vorzeichenbehaftet ("signed") ist, resultieren viele Prüfsummen auf 32bit Plattformen in negativen Integer-Werten. In 64bit Installationen sind jedoch alle crc32()-Ergebnisse positive Ganzzahlen.
Daher ist die "%u" Typangabe von sprintf() oder printf() nötig, um die Stringrepräsentation der vorzeichenlosen crc32()-Prüfsumme im Dezimalformat zu erhalten.
Für die hexadezimale Repräsentation der Prüfsumme kann entweder die "%x" Typangabe von sprintf() oder printf() oder die dechex()-Umwandlungsfunktion verwendet werden; beide sorgen für die Konvertierung des crc32()-Ergebnisses in eine vorzeichenlose Ganzzahl.
Es wurde in Erwägung gezogen, auch in 64bit-Installationen negative Ganzzahlen für höhere Ergebniswerte zurückzugeben, aber das hätte die Hexadezimalumwandlung ruiniert, da dann negative Ganzzahlen ein zusätzliches 0xFFFFFFFF########-Offset erhielten. Da die hexadezimale Repräsentation der meist verbreitete Anwendungsfall scheint, wurde entschieden das nicht zu tun, auch wenn es direkte dezimale Vergleiche in etwa 50% der Fälle ruiniert, wenn von 32bit auf 64bit gewechselt wird.
Die Funktion eine Ganzzahl zurückgeben zu lassen, war im Nachhinein gesehen möglicherweise nicht die beste Idee, und gleich einen Hex-String zurückzugeben (wie z.B. md5()) könnte gleich zu Anfang ein besserer Plan gewesen sein.
Für eine portablere Lösung ist das generische hash() in
Erwägung zu ziehen. hash("crc32b", $str)
liefert die gleiche
Zeichenkette wie str_pad(dechex(crc32($str)), 8, '0', STR_PAD_LEFT)
.
Parameter-Liste
-
string
-
Die Daten.
Rückgabewerte
Gibt die CRC32-Prüfsumme von string
als Integer
zurück.
Beispiele
Beispiel #1 Anzeigen einer CRC32-Prüfsumme
Das folgende Beispiel zeigt, wie eine konvertierte Prüfsumme mittels der Funktion printf() ausgegeben wird:
<?php
$pruefsumme = crc32("Der schnelle braune Fuchs sprang über den trägen Hund.");
printf("%u\n", $pruefsumme);
?>