ホームページ  >  記事  >  バックエンド開発  >  文字列の 32 ビット CRC を計算する PHP 関数 crc32()

文字列の 32 ビット CRC を計算する PHP 関数 crc32()

黄舟
黄舟オリジナル
2017-11-02 10:24:042399ブラウズ

crc32() の結果を出力する:

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

定義と使用法

crc32() 関数は、string の 32 ビット CRC (巡回冗長検査) を計算します。

この機能はデータの整合性を検証するために使用できます。

ヒント: crc32() 関数から正しい文字列表現を確実に取得するには、printf() または sprintf() 関数の %u フォーマッタを使用する必要があります。 %u 形式文字が使用されていない場合、結果は間違った数値または負の数値として表示される可能性があります。

構文

crc32(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 アルゴリズムは語長のビット数に基づいて計算されます。

crc32 関数は、php の 2 つの 定数参照に従って PHP_INT_SIZE と PHP_INT_MAX を計算します これら 2 つの定数の定義:
整数の語長はプラットフォームに依存しますが、最大値は通常約 20 億 (32 ビット) ) 記号)。 PHP は符号なし整数をサポートしていません。
Integer 値の語長は定数 PHP_INT_SIZE で表すことができます。PHP 4.4.0 および PHP 5.0.5 以降では、最大値は定数 PHP_INT_MAX で表すことができます。 出力 PHP_INT_SIZE: 4、PHP_INT_MAX: 2147483647 (32 ビット出力)

以上が文字列の 32 ビット CRC を計算する PHP 関数 crc32()の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。