回答
你并不需要,因为它已经存在,实现它: http://php.net/manual/en/function.gmp-hamdist.php
(如果你有GMP支持)
尝试:
echo gmp_hamdist('10101010','01010101')
哪里可以下载用于PHP5.3.0的php_gmp.dll? – user198729 2010-04-19 12:13:29
看看在http://www.php.net/manual/en/gmp.installation.php – binaryLV 2010-04-19 12:16:49
评论有没有我需要的DLL。 – user198729 2010-04-19 12:25:24
试试这个功能:
function hamming($b1, $b2) {
$b1 = ltrim($b1, '0');
$b2 = ltrim($b2, '0');
$l1 = strlen($b1);
$l2 = strlen($b2);
$n = min($l1, $l2);
$d = max($l1, $l2) - $n;
for ($i=0; $i<$n; ++$i) {
if ($b1[$l1-$i] != $b2[$l2-$i]) {
++$d;
}
}
return $d;
}
你可以很容易地编码你的汉明函数w在substr_count()
和the code provided in this comment on the PHP manual的帮助下。
/* hamdist is equivilent to: */
echo gmp_popcount(gmp_xor($ham1, $ham2)) . "\n";
如果您没有GMP支持,总会有这样的情况。它只能在长达32位的二进制字符串上运行。
function hamdist($x, $y){
for($dist = 0, $val = $x^$y; $val; ++$dist){
$val &= $val - 1;
}
return $dist;
}
function hamdist_str($x, $y){
return hamdist(bindec($x), bindec($y));
}
echo hamdist_str('10101010','01010101'); //8
而不这里安装GMP为任何相同长度的简单的解决方案的二进制串
function HammingDistance($bin1, $bin2) {
$a1 = str_split($bin1);
$a2 = str_split($bin2);
$dh = 0;
for ($i = 0; $i < count($a1); $i++)
if($a1[$i] != $a2[$i]) $dh++;
return $dh;
}
echo HammingDistance('10101010','01010101'); //returns 8
下面的函数可与十六进制字符串(长度相等),大于32位长。
function hamming($hash1, $hash2) {
$dh = 0;
$len1 = strlen($hash1);
$len2 = strlen($hash2);
$len = 0;
do {
$h1 = hexdec(substr($hash1, $len, 8));
$h2 = hexdec(substr($hash2, $len, 8));
$len += 8;
for ($i = 0; $i < 32; $i++) {
$k = (1 << $i);
if (($h1 & $k) !== ($h2 & $k)) {
$dh++;
}
}
} while ($len < $len1);
return $dh;
}
- 1. 在Matlab中计算两个二进制数字串之间的汉明距离
- 2. 如何存储和计算二进制代码之间的汉明距离?
- 3. 两个字符串在二进制中的汉明距离不准确
- 4. 如何计算两个3 * 3矩阵的Matlab中的汉明距离
- 5. 用四个分类单元计算汉明距离
- 6. 汉明距离蟒蛇改进
- 7. 汉明距离和CRC
- 8. 生成汉明距离t
- 9. F#:如何计算海明距离?
- 10. 两地的距离计算
- 11. 生成平均汉明距离为50%的随机二进制文件?
- 12. 汉明距离是否可以与非二进制字符串一起使用
- 13. Mysql将varchar二进制表示字段转换为二进制以执行海明距离计算bit_count
- 14. 如何计算像素中两个物体之间的距离?
- 15. 如何计算ArrayList中两个标记之间的距离?
- 16. 如何计算Python中两个单词的含义距离
- 17. 我如何计算Java中两个gps点之间的距离?
- 18. 如何计算GraphX,Scala中两个节点之间的距离?
- 19. 如何使用php计算两地之间的距离?
- 20. PHP计算距离 - 在线
- 21. 计算汉明码
- 22. 计算二维空间中两点之间的距离?
- 23. 查找最接近的汉明距离
- 24. 如何计算距离?
- 25. 行明智的距离计算
- 26. 如何计算两个观察二进制组合的数量?
- 27. 计算距离
- 28. 计算距离
- 29. 计算距离
- 30. 计算距离
我使用PHP5.3,但没有php_gmp.dll – user198729 2010-04-19 12:10:05
在XAMPP的Windows发行,你可以找到一个副本:http://www.apachefriends.org/en/xampp.html – zaf 2010-04-19 13:39:21