首頁  >  文章  >  後端開發  >  php計算一個字串的32位元CRC的函數crc32()

php計算一個字串的32位元CRC的函數crc32()

黄舟
黄舟原創
2017-11-02 10:24:042436瀏覽

實例

輸出crc32() 的結果:

<?php
$str = crc32("Hello World!");
printf("%un",$str);
?>

定義與用法

crc32() 函數計算一個字串的32 位CRC(循環冗餘校驗)。

此函數可用來驗證資料的完整性。

提示:為確保您能從 crc32() 函數中取得正確的字串表示,您必須使用 printf() 或 sprintf() 函數的 %u 格式符號。如果未使用 %u 格式符,結果可能會顯示為不正確的數字或負數。

語法

crc32(string)

參數        說明

string     必要。規定要計算的字串。    

技術細節

傳回值:           以整數形式傳回 string 的 32 位元循環冗餘校驗碼多項式。

PHP 版本:       4.0.1+    

實例1

在本實例中,我們將在使用以及不使用"%u" 格式符的情況下,輸出crc32() 的結果(注意結果是相同的):

<?php
$str = crc32("Hello world!");
echo &#39;Without %u: &#39;.$str."<br>";
echo &#39;With %u: &#39;;
printf("%u",$str);
?>

上面的程式碼將輸出:

Without %u: 461707669
With %u: 461707669

實例2

在本實例中,我們將在使用以及不使用"%u" 格式符的情況下,輸出crc32() 的結果(注意結果是不相同的):

<?php
$str = crc32("Hello world.");
echo &#39;Without %u: &#39;.$str."<br>";
echo &#39;With %u: &#39;;
printf("%u",$str);
?>

上面的程式碼將輸出:

Without %u: -1959132156
With %u: 2335835140

#crc32傳回的結果在32位元機上會產生溢出,所以結果可能為負數。而在64位元機上不會溢出,所以總是正值。

CRC演算法是按字長位數bit計算的。

crc32函數會依照php中的兩個常數參考計算PHP_INT_SIZE,PHP_INT_MAX
這兩個常數的定義:
整數型數的字長和平台有關,儘管通常最大值是大約二十億(32 位元有符號)。 PHP 不支援無符號整數。 Integer值的字長可以用常數PHP_INT_SIZE來表示,自 PHP 4.4.0 和 PHP 5.0.5後,最大值可以用常數PHP_INT_MAX來表示。
輸出下32位元中PHP_INT_SIZE:4,PHP_INT_MAX:2147483647
輸出下64位元中PHP_INT_SIZE:8,PHP_INT_MAX:9223372036854775807

#

以上是php計算一個字串的32位元CRC的函數crc32()的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn