zoukankan      html  css  js  c++  java
  • 16进制字符串转36进制字符串

    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

  • 相关阅读:
    第八周作业
    第八周上机练习
    第七周上机练习
    第六周作业
    第六周上机练习
    第五周上机练习
    第四周作业
    第四次上机作业
    第三周作业
    第一次上机作业
  • 原文地址:https://www.cnblogs.com/Athrun/p/base_convert.html
Copyright © 2011-2022 走看看