크레딧
이 도전은 @miles 에서 시작되었습니다 .
입력 문자열의 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이 0 일 때에 얻은 나머지 001
는 CRC3 해시의 결과입니다.
명세서
- 생성기 다항식은
0x104C11DB7
, 또는0b100000100110000010001110110110111
, 또는4374732215
입니다. - 입력은 문자열 또는 정수 목록 또는 다른 적절한 형식 일 수 있습니다.
- 출력은 16 진 문자열 또는 정수 또는 다른 적절한 형식입니다.
- CRC32 해시를 계산하는 내장 기능은 허용되지 않습니다.
골
코드 골프에 대한 표준 규칙이 적용됩니다.
가장 짧은 코드가 승리합니다.
테스트 사례
input output (hex)
"code-golf" 147743960 08CE64D8
"jelly" 1699969158 65537886
"" 0 00000000