php 实现进制相互转换


Posted in PHP onApril 07, 2016

从十进制向其它进制转换,用的是就用该数字不断除以要转换的进制数,读取余数。连接一起就可以了。

<?php 
/**
 *十进制转二进制、八进制、十六进制 不足位数前面补零*
 *
 * @param array $datalist 传入数据array(100,123,130)
 * @param int $bin 转换的进制可以是:2,8,16
 * @return array 返回数据 array() 返回没有数据转换的格式
 */
function decto_bin($datalist,$bin)
{
  static $arr=array(0,1,2,3,4,5,6,7,8,9,'A','B','C','D','E','F');
  if(!is_array($datalist)) $datalist=array($datalist);
  if($bin==10)return $datalist; //相同进制忽略
  $bytelen=ceil(16/$bin); //获得如果是$bin进制,一个字节的长度
  $aOutChar=array();
  foreach ($datalist as $num)
  {
    $t="";
    $num=intval($num);
  if($num===0)continue;
    while($num>0)
    {
      $t=$arr[$num%$bin].$t;
      $num=floor($num/$bin);
    }
    $tlen=strlen($t);
    if($tlen%$bytelen!=0)
    {
    $pad_len=$bytelen-$tlen%$bytelen;
    $t=str_pad("",$pad_len,"0",STR_PAD_LEFT).$t; //不足一个字节长度,自动前面补充0
    }
    $aOutChar[]=$t;
  }
  return $aOutChar;
}

测试:

var_dump(decto_bin(array(128,253),2));
var_dump(decto_bin(array(128,253),8));
var_dump(decto_bin(array(128,253),16));

X-Powered-By: PHP/5.2.0
Content-type: text/html

array(2) {
 [0]=>
 string(8) "10000000"
 [1]=>
 string(8) "11111101"
}
array(2) {
 [0]=>
 string(4) "0200"
 [1]=>
 string(4) "0375"
}
array(2) {
 [0]=>
 string(2) "80"
 [1]=>
 string(2) "FD"
}

二进制、八进制、十六进制转十进制

这个转换用乘法,如:1101 转十进制:1*2^3+1*2^2+0*2^1+1*2^0

代码:

<?php 
/**
 *二进制、八进制、十六进制 转十进制*
 *
 * @param array $datalist 传入数据array(df,ef)
 * @param int $bin 转换的进制可以是:2,8,16
 * @return array 返回数据 array() 返回没有数据转换的格式
 * @copyright chengmo QQ:8292669
 */
function bin_todec($datalist,$bin)
{
  static $arr=array('0'=>0,'1'=>1,'2'=>2,'3'=>3,'4'=>4,'5'=>5,'6'=>6,'7'=>7,'8'=>8,'9'=>9,'A'=>10,'B'=>11,'C'=>12,'D'=>13,'E'=>14,'F'=>15);
  if(!is_array($datalist))$datalist=array($datalist);
  if($bin==10)return $datalist; //为10进制不转换
  $aOutData=array(); //定义输出保存数组
  foreach ($datalist as $num)
  {
    $atnum=str_split($num); //将字符串分割为单个字符数组
    $atlen=count($atnum);
    $total=0;
    $i=1;
    foreach ($atnum as $tv)
    {
      $tv=strtoupper($tv);
       
      if(array_key_exists($tv,$arr))
      {
        if($arr[$tv]==0)continue;
        $total=$total+$arr[$tv]*pow($bin,$atlen-$i);
      }
      $i++;
    }
    $aOutData[]=$total;
  }
  return $aOutData;
}

测试:

var_dump(bin_todec(array('ff','ff33','cc33'),16));
var_dump(bin_todec(array('1101101','111101101'),2));
var_dump(bin_todec(array('1234123','12341'),8));

X-Powered-By: PHP/5.2.0
Content-type: text/html

array(3) {
 [0]=>
 int(255)
 [1]=>
 int(65331)
 [2]=>
 int(52275)
}
array(2) {
 [0]=>
 int(124)
 [1]=>
 int(508)
}
array(2) {
 [0]=>
 int(342099)
 [1]=>
 int(5345)
}

这些只是实现方式,其实不在乎php语言还是其它,实现思路都是一样的。php其实内置不少函数可以完成这些内容:

bindec(),decoct(),dechex() base_convert() decbin() 这里只是实现思路而已。呵呵!

PHP 相关文章推荐
Snoopy类使用小例子
Apr 15 PHP
发款php蜘蛛统计插件只要有mysql就可用
Oct 12 PHP
PHP数据流应用的一个简单实例
Sep 14 PHP
XAMPP安装与使用方法详细解析
Nov 27 PHP
根据中文裁减字符串函数的php代码
Dec 03 PHP
php防止伪造的数据从URL提交方法
Jun 27 PHP
php中动态调用函数的方法
Mar 16 PHP
PHP读书笔记_运算符详解
Jul 01 PHP
功能强大的php分页函数
Jul 20 PHP
Redis使用Eval多个键值自增的操作实例
Nov 04 PHP
PHP中PDO事务处理操作示例
May 02 PHP
PHP智能识别收货地址信息实例
Jan 05 PHP
Linux(CentOS)下PHP扩展PDO编译安装的方法
Apr 07 #PHP
php制作简单模版引擎
Apr 07 #PHP
thinkphp框架下实现登录、注册、找回密码功能
Apr 06 #PHP
非常有用的9个PHP代码片段
Apr 06 #PHP
10个对初学者非常有用的PHP技巧
Apr 06 #PHP
yii2.0实现pathinfo的形式访问的配置方法
Apr 06 #PHP
PHP实现的DES加密解密实例代码
Apr 06 #PHP
You might like
用PHP制作静态网站的模板框架(三)
2006/10/09 PHP
PHP设置进度条的方法
2015/07/08 PHP
Thinkphp3.2简单解决多文件上传只上传一张的问题
2017/09/26 PHP
PHP的mysqli_stat()函数讲解
2019/01/23 PHP
Laravel 集成微信用户登录和绑定的实现
2019/12/27 PHP
jQuery中绑定事件的命名空间详解
2011/04/05 Javascript
javascript从右边截取指定字符串的三种实现方法
2013/11/29 Javascript
js判断undefined类型示例代码
2014/02/10 Javascript
nodejs命令行参数处理模块commander使用实例
2014/09/17 NodeJs
javascript常用函数(1)
2015/11/04 Javascript
JavaScript实战之带收放动画效果的导航菜单
2016/08/16 Javascript
用iframe实现不刷新整个页面上传图片的实例
2016/11/18 Javascript
js实现3D图片展示效果
2017/03/09 Javascript
整理关于Bootstrap导航的慕课笔记
2017/03/29 Javascript
jquery ajax异步提交表单数据的方法
2017/10/27 jQuery
js实现下拉框二级联动
2018/12/04 Javascript
JS判断两个数组或对象是否相同的方法示例
2019/02/28 Javascript
Node.js系列之发起get/post请求(2)
2019/08/30 Javascript
python通过自定义isnumber函数判断字符串是否为数字的方法
2015/04/23 Python
Python中扩展包的安装方法详解
2017/06/14 Python
python保存文件方法小结
2018/07/27 Python
python3获取url文件大小示例代码
2019/09/18 Python
利用Python实现自动扫雷小脚本
2020/12/17 Python
python工具快速为音视频自动生成字幕(使用说明)
2021/01/27 Python
CSS3 animation ? steps 函数详解
2019/08/30 HTML / CSS
成人高等教育毕业生自我鉴定
2013/10/22 职场文书
自行车租赁公司创业计划书
2014/01/28 职场文书
学生周末回家住宿长期请假条
2014/02/15 职场文书
经济管理毕业生求职信
2014/03/15 职场文书
校园游戏活动新闻稿
2014/10/15 职场文书
贪污受贿检讨书范文
2014/11/19 职场文书
2014年机关工会工作总结
2014/12/19 职场文书
新教师个人工作总结
2015/02/06 职场文书
健康教育主题班会
2015/08/14 职场文书
小学班主任培训心得体会
2016/01/07 职场文书
Mysql实现简易版搜索引擎的示例代码
2021/08/30 MySQL