2024 PHP Conference Japan

gmp_hamdist

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

gmp_hamdist漢明距離

說明

gmp_hamdist(GMP|int|string $num1, GMP|int|string $num2): int

回傳 num1num2 之間的漢明距離。兩個運算元都應為非負數。

參數

num1

一個 GMP 物件、一個 int 或一個可以被解釋為數字的 string,其遵循與在 gmp_init() 中使用字串並啟用自動基數檢測(即 base 等於 0 時)相同的邏輯。

它應該是正數。

num2

一個 GMP 物件、一個 int 或一個可以被解釋為數字的 string,其遵循與在 gmp_init() 中使用字串並啟用自動基數檢測(即 base 等於 0 時)相同的邏輯。

它應該是正數。

回傳值

num1num2 之間的漢明距離,以 int 型別表示。

範例

範例 #1 gmp_hamdist() 範例

<?php
$ham1
= gmp_init("1001010011", 2);
$ham2 = gmp_init("1011111100", 2);
echo
gmp_hamdist($ham1, $ham2) . "\n";

/* hamdist 等同於: */
echo gmp_popcount(gmp_xor($ham1, $ham2)) . "\n";
?>

上述範例將輸出

6
6

另請參閱

新增註解

使用者貢獻的註解 2 則註解

Bas Vijfwinkel
6 年前
對於那些不支援 gmp 的人

$hamming_distance = count(array_diff_assoc(str_split($string1), str_split($string2)));

如果您不確定您的字串長度是否相等

$hamming_distance = count(array_diff_assoc(str_split(str_pad($string1,strlen($string2)-strlen($string1),' ')), str_split(str_pad($string2,strlen($string1)-strlen($string2),' '))));
grabzila at gmail dot com
3 年前
<?php
$hamdist
= gmp_hamdist(-100, -10); // 4
$hamdist = gmp_hamdist(100, 10); // 5
?>

此函式可以很好地處理負數。
To Top