php实现的任意进制互转类分享


Posted in PHP onJuly 07, 2015

之前不知道php自带有base_convert可以实现任意进制之间的转换,自己写了一个。。。。

<?php 
/**
 * 进制转换类 
 * @author sgf@funcity
 * @version 2011-02-15
 */
Class Hex{
 
 private static $element = array(
 '0','1','2','3','4','5','6','7','8','9',
 'A','B','C','D','E','F','G','H','I','J',
 'K','L','M','N','O','P','Q','R','S','T',
 'U','V','W','X','Y','Z'
 );
 
 private static $hex_min = 2;
 private static $hex_max = 36;
 
 
 /**
 * 进制转换
 */
 public function conv($int,$out_hex,$in_hex=10,$use_system=true){
 
 if($use_system && function_exists('base_convert')){
  return strtoupper(base_convert($int,$in_hex,$out_hex));
 }
 
 if($out_hex == $in_hex){
  return $int;
 }
 if($out_hex > self::$hex_max || $out_hex < self::$hex_min){
  return false;
 }
 if($in_hex > self::$hex_max || $in_hex < self::$hex_min){
  return false;
 }
 $hex_10 = $this->_conv2hex10($int,$in_hex);
 return strtoupper($this->_conv_hex($hex_10,$out_hex));
 }
 
 /**
 * 将任意进制数字转为10进制数字
 */
 private function _conv2hex10($int,$in_hex){
 $int = strtoupper(trim($int));
 if($in_hex==10){
  return $int;
 }elseif( $in_hex== 2 && function_exists('bindec')){
  return bindec($int);
 } elseif($in_hex== 16 && function_exists('hexdec')){
  return hexdec($int);
 } elseif($in_hex== 8 && function_exists('octdec')){
  return octdec($int);
 }
 $array = array();
 $result = 0;
 for($i=0;$i<strlen($int);$i++){
  array_unshift( $array, substr($int,$i,1)); //插入到数组头部(既倒序)
 }
 foreach($array as $k => $v){
 
  $hex10_value = array_search($v,self::$element);
  if($hex10_value==-1){
  return false;
  }
  $result += intval( pow($in_hex,$k) * $hex10_value );
 
 }
 return $result;
 }
 
 /**
 * 把10进制数换成任意进制数
 */
 private function _conv_hex($hex_10,$out_hex){
 
 $hex_10 = intval($hex_10);
 
 if($out_hex==10){
  return $hex_10;
 }else if( $out_hex==2  && function_exists('decbin')){
  return decbin($hex_10);
 } elseif ( $out_hex ==16 && function_exists('dechex')){
  return dechex($hex_10);
 } elseif ( $out_hex ==8 && function_exists('decoct')){
  return decoct($hex_10);
 }
 
 $array = array();
 $result = ""; 
 
 //利用10进制数除任意进制数 倒取余数法转换。
 do {
  array_unshift( $array, $hex_10 % $out_hex); //余数插入到数组数组第1个位置。
  $hex_10 = $hex_10 / $out_hex ; //除法
 } while ($hex_10>1);
 
 foreach($array as $k){
  $result .= self::$element[$k]; 
 }
 return $result; 
 }
 
 
}
?>
PHP 相关文章推荐
php google或baidu分页代码
Nov 26 PHP
PHP中运用jQuery的Ajax跨域调用实现代码
Feb 21 PHP
解析如何通过PHP函数获取当前运行的环境 来进行判断执行逻辑(小技巧)
Jun 25 PHP
php实现监听事件
Nov 06 PHP
PHP中$_FILES的使用方法及注意事项说明
Feb 14 PHP
PHPUnit安装及使用示例
Oct 29 PHP
php使用fgetcsv读取csv文件出现乱码的解决方法
Nov 08 PHP
PHP采用get获取url汉字出现乱码的解决方法
Nov 13 PHP
学习php设计模式 php实现策略模式(strategy)
Dec 07 PHP
PHP文件上传类实例详解
Apr 08 PHP
浅谈PHP中try{}catch{}的使用方法
Dec 09 PHP
php自定义函数br2nl实现将html中br换行符转换为文本输入中换行符的方法【与函数nl2br功能相反】
Feb 17 PHP
Apache服务器下防止图片盗链的办法
Jul 06 #PHP
php获取指定(访客)IP所有信息(地址、邮政编码、国家、经纬度等)的方法
Jul 06 #PHP
php实现搜索一维数组元素并删除二维数组对应元素的方法
Jul 06 #PHP
jquery+php实现导出datatables插件数据到excel的方法
Jul 06 #PHP
php导出中文内容excel文件类实例
Jul 06 #PHP
PHP伪造来源HTTP_REFERER的方法实例详解
Jul 06 #PHP
PHP 错误处理机制
Jul 06 #PHP
You might like
用PHP实现WEB动态网页静态
2006/10/09 PHP
php生成缩略图示例代码分享(使用gd库实现)
2014/01/20 PHP
php 过滤英文标点符号及过滤中文标点符号代码
2014/06/12 PHP
PHP使用静态方法的几个注意事项
2014/09/16 PHP
php获取文件名后缀常用方法小结
2015/02/24 PHP
php使用ffmpeg向视频中添加文字字幕的实现方法
2016/05/23 PHP
微信支付PHP SDK ―― 公众号支付代码详解
2016/09/13 PHP
php实现文件预览功能
2017/05/23 PHP
CI框架网页缓存简单用法分析
2018/12/26 PHP
javascript 语法基础 想学习js的朋友可以看看
2009/12/16 Javascript
JavaScript的递归之递归与循环示例介绍
2013/08/05 Javascript
js实现右键菜单功能
2016/11/28 Javascript
AngularJS实现给动态生成的元素绑定事件的方法
2016/12/14 Javascript
Angular中点击li标签实现更改颜色的核心代码
2017/12/08 Javascript
vue中格式化时间过滤器代码实例
2019/04/17 Javascript
vue之debounce属性被移除及处理详解
2019/11/13 Javascript
[02:38]DOTA2超级联赛专访Loda 认为IG世界最强
2013/05/27 DOTA
[52:20]VP vs VG Supermajor小组赛 B组胜者组决赛 BO3 第一场 6.2
2018/06/03 DOTA
python 匹配url中是否存在IP地址的方法
2018/06/04 Python
django认证系统实现自定义权限管理的方法
2018/07/16 Python
python Manager 之dict KeyError问题的解决
2019/12/21 Python
如何清空python的变量
2020/07/05 Python
Foreo国际站:Foreo International
2018/10/29 全球购物
百度JavaScript笔试题
2015/01/15 面试题
一套Delphi的笔试题一
2016/02/14 面试题
青年志愿者事迹材料
2014/02/07 职场文书
小学语文国培感言
2014/03/04 职场文书
岗位职责怎么写
2014/03/14 职场文书
目标管理责任书
2014/04/15 职场文书
三好学生演讲稿范文
2014/04/26 职场文书
公安局班子个人对照检查材料思想汇报
2014/10/09 职场文书
老龙头导游词
2015/02/11 职场文书
2015年学校食堂工作总结
2015/04/22 职场文书
入学证明
2015/06/23 职场文书
全家福照片寄语怎么写?
2019/04/02 职场文书
python 使用pandas读取csv文件的方法
2022/12/24 Python