标签:
PHP任意进制之间转换数字base_convert
http://php.net/manual/zh/function.base-convert.php
实际测试时因为有精度留失的问题,会导致换错误。
Warning
由于使用内部的 "double" 或 "float" 类型,base_convert() 的操作可能会导致大数值中的精度丢失。请参见本手册的 浮点数 章节以便获得更多详细信息。
$s = ‘BE55D904-1F35-4838-8F8F-B27EDEA9DFAB‘; $sha1 = sha1($s); echo $sha1; echo ‘<br />‘; $sha36 = str_baseconvert($sha1, 16, 36); echo $sha36; echo ‘<br />‘; $sha1 = str_baseconvert($sha36, 36, 16); echo $sha1; echo ‘<br />‘; function str_baseconvert($str, $frombase=10, $tobase=36) { $str = trim($str); if (intval($frombase) != 10) { $len = strlen($str); $q = 0; for ($i=0; $i<$len; $i++) { $r = base_convert($str[$i], $frombase, 10); $q = bcadd(bcmul($q, $frombase), $r); } } else $q = $str; if (intval($tobase) != 10) { $s = ‘‘; while (bccomp($q, ‘0‘, 0) > 0) { $r = intval(bcmod($q, $tobase)); $s = base_convert($r, 10, $tobase) . $s; $q = bcdiv($q, $tobase, 0); } } else $s = $q; return $s; }
BC数学函数
http://php.net/manual/zh/ref.bc.php
标签:
原文地址:http://www.cnblogs.com/Athrun/p/base_convert.html