回答
你並不需要,因爲它已經存在,實現它: 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