クレジット
入力文字列のCRC32ハッシュを計算する関数を作成します。入力は、任意の長さのASCII文字列です。出力は、その入力文字列のCRC32ハッシュになります。
説明
CRC32と他のCRCのアルゴリズムは基本的に同じであるため、ここではCRC3のみを示します。
まず、生成多項式があります。これは実際には4ビットの[n + 1]整数です(CRC32では33ビットになります)。
この例では、生成多項式は1101
です。
次に、ハッシュされる文字列があります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^
(21)
領域1がゼロの場合、で得られた剰余001
は、CRC3ハッシュの結果になります。
スペック
- 生成多項式は
0x104C11DB7
、または0b100000100110000010001110110110111
、または4374732215
です。 - 入力は、文字列または整数のリスト、またはその他の適切な形式にすることができます。
- 出力は、16進文字列または整数のみ、またはその他の適切な形式です。
- CRC32ハッシュを計算するビルトインは許可されていません。
ゴール
コードゴルフの標準ルールが適用されます。
最短のコードが優先されます。
テストケース
input output (hex)
"code-golf" 147743960 08CE64D8
"jelly" 1699969158 65537886
"" 0 00000000