PHP Conference Japan 2024

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