Credits
Diese Herausforderung ging von @miles aus .
Erstellen Sie eine Funktion, die den CRC32-Hash einer Eingabezeichenfolge berechnet. Die Eingabe ist eine ASCII-Zeichenfolge beliebiger Länge. Die Ausgabe ist der CRC32-Hash dieser Eingabezeichenfolge.
Erläuterung
Der Algorithmus von CRC32 und anderen CRCs ist im Wesentlichen derselbe, sodass hier nur CRC3 gezeigt wird.
Erstens haben Sie das Generatorpolynom, das eigentlich eine 4-Bit-Ganzzahl [n + 1] ist (würde in CRC32 33-Bit betragen).
In diesem Beispiel ist das Generatorpolynom 1101
.
Dann haben Sie die Zeichenfolge, die gehasht werden soll, was in diesem Beispiel der Fall wäre 00010010111100101011001101
.
00010010111100101011001101|000 (1) append three [n] "0"s
1101 (2) align with highest bit
00001000111100101011001101|000 (3) XOR (1) and (2)
1101 (4) align with highest bit
00000101111100101011001101|000 (5) XOR (3) and (4)
1101 (6) align with highest bit
00000011011100101011001101|000 (7) XOR (5) and (6)
1101 (8) align with highest bit
00000000001100101011001101|000 (9) XOR (7) and (8)
1101 (10) align with highest bit
00000000000001101011001101|000 (11) XOR (9) and (10)
1101 (12) align with highest bit
00000000000000000011001101|000 (13) XOR (11) and (12)
1101 (14) align with highest bit
00000000000000000000011101|000 (15) XOR (13) and (14)
1101 (16) align with highest bit
00000000000000000000000111|000 (17) XOR (15) and (16)
110 1 (18) align with highest bit
00000000000000000000000001|100 (19) XOR (17) and (18)
1 101 (20) align with highest bit
00000000000000000000000000|001 (21) XOR (19) and (20)
^--------REGION 1--------^ ^2^
Der Rest, der erhalten wird (21)
, wenn der Bereich 1 Null ist 001
, was das Ergebnis des CRC3-Hash ist.
Technische Daten
- Das Generatorpolynom ist
0x104C11DB7
oder0b100000100110000010001110110110111
oder4374732215
. - Die Eingabe kann eine Zeichenfolge oder eine Liste von Ganzzahlen oder ein anderes vernünftiges Format sein.
- Die Ausgabe kann eine hexadezimale Zeichenfolge, eine Ganzzahl oder ein anderes vernünftiges Format sein.
- Built-Ins, die den CRC32-Hash berechnen, sind nicht zulässig.
Tor
Es gelten die Standardregeln für Code-Golf .
Der kürzeste Code gewinnt.
Testfälle
input output (hex)
"code-golf" 147743960 08CE64D8
"jelly" 1699969158 65537886
"" 0 00000000