Strings crc32

(PHP 4 >= 4.0.1, PHP 5, PHP 7, PHP 8)

crc32 — 문자열의 crc32 다항식을 계산합니다.


설명

crc32(string $string): int

string의 32비트 길이의 순환 중복 체크섬 다항식을 생성합니다. 이것은 일반적으로 전송되는 데이터의 무결성을 검증하는 데 사용됩니다.

경고 PHP의 정수 유형은 서명되어 있기 때문에 많은 crc32 체크섬은 32비트 플랫폼에서 음의 정수가 됩니다. 64비트 설치에서 모든 crc32() 결과는 양의 정수가 됩니다.

따라서 10진수 형식의 부호 없는 crc32() 체크섬의 문자열 표현을 얻으려면 sprintf() 또는 printf()의 "%u" 포맷터를 사용해야 합니다.

체크섬의 16진수 표현의 경우 sprintf() 또는 printf() 또는 dechex() 변환 함수의 "%x" 포맷터를 사용할 수 있습니다. 이 두 가지 모두 crc32() 결과를 부호 없는 정수로 변환하는 작업도 처리합니다.

64비트 설치에서도 더 높은 결과 값에 대해 음수 정수를 반환하는 것이 고려되었지만 음수가 추가 0xFFFFFFFF######## 오프셋을 가져오기 때문에 16진수 변환이 중단됩니다. 16진법 표현이 가장 일반적인 사용 사례인 것처럼 32비트에서 64비트로 이동할 때 사례의 약 50%에서 직접적인 십진법 비교를 중단하더라도 이를 중단하지 않기로 결정했습니다.

돌이켜보면 함수가 정수를 반환하도록 하는 것이 최선의 생각이 아니었고 즉시 16진 문자열 표현을 반환하는 것이 (예를 들어 md5()가 하는 것처럼) 더 나은 계획이었을 것입니다.

더 이식 가능한 솔루션을 위해 일반 hash()를 고려할 수도 있습니다. hash("crc32b", $str)은 str_pad(dechex(crc32($str)), 8, '0', STR_PAD_LEFT)와 동일한 문자열을 반환합니다.


매개변수

string
data.

반환 값

string의 crc32 체크섬을 정수로 반환합니다.


Examples

예제 #1 crc32 체크섬 표시

이 예에서는 printf() 함수를 사용하여 변환된 체크섬을 인쇄하는 방법을 보여줍니다.

                  
<?php
$checksum = crc32("The quick brown fox jumped over the lazy dog.");
printf("%u\n", $checksum);
?>
                  
                

기타

  • hash() - 해시 값 생성(메시지 다이제스트)
  • md5() - 문자열의 md5 해시 계산
  • sha1() - 문자열의 sha1 해시 계산