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 相关文章推荐
967 个函式
Oct 09 PHP
使用php伪造referer的方法 利用referer防止图片盗链
Jan 20 PHP
PHP+Mysql实现多关键字与多字段生成SQL语句的函数
Nov 05 PHP
PHP获取一年中每个星期的开始和结束日期的方法
Feb 12 PHP
php实现的RSS生成类实例
Apr 23 PHP
php通过baihui网API实现读取word文档并展示
Jun 22 PHP
php获取从百度、谷歌等搜索引擎进入网站关键词的方法
Jul 08 PHP
php实现的中文分词类完整实例
Feb 06 PHP
PHP实现的最大正向匹配算法示例
Dec 19 PHP
php strftime函数的详细用法
Jun 21 PHP
Thinkphp 5.0实现微信企业付款到零钱
Sep 30 PHP
PHP使用PDO创建MySQL数据库、表及插入多条数据操作示例
May 30 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
Yii中Model(模型)的创建及使用方法
2015/12/28 PHP
smarty学习笔记之常见代码段用法总结
2016/03/19 PHP
php判断str字符串是否是xml格式数据的方法示例
2017/07/26 PHP
用js实现的页面关键字密度查询代码
2007/12/27 Javascript
客户端限制只能上传jpg格式图片的js代码
2010/12/09 Javascript
使用jquery读取html5 localstorage的值的方法
2013/01/04 Javascript
js 赋值包含单引号双引号问题的解决方法
2014/02/26 Javascript
JS+CSS实现仿触屏手机拨号盘界面及功能模拟完整实例
2015/05/16 Javascript
JQuery节点元素属性操作方法
2015/06/11 Javascript
TypeScript 学习笔记之基本类型
2015/06/19 Javascript
coffeescript使用的方式汇总
2015/08/05 Javascript
jquery+html5时钟特效代码分享(可设置闹钟并且语音提醒)
2020/03/30 Javascript
javascript实现简单计算器效果【推荐】
2016/04/19 Javascript
Node.js环境下JavaScript实现单链表与双链表结构
2016/06/12 Javascript
jQuery复制节点用法示例(clone方法)
2016/09/08 Javascript
Vue 框架之动态绑定 css 样式实例分析
2018/11/14 Javascript
Vue组件Draggable实现拖拽功能
2018/12/01 Javascript
python getopt 参数处理小示例
2009/06/09 Python
python3实现抓取网页资源的 N 种方法
2017/05/02 Python
python装饰器深入学习
2018/04/06 Python
linux中如何使用python3获取ip地址
2019/07/15 Python
通过实例了解python__slots__使用方法
2020/09/14 Python
CSS3使用多列制作瀑布流
2016/05/10 HTML / CSS
html5 Canvas画图教程(5)—canvas里画曲线之arc方法
2013/01/09 HTML / CSS
canvas探照灯效果的示例代码
2018/11/30 HTML / CSS
澳大利亚冲浪和时尚服装网上购物:SurfStitch
2017/07/29 全球购物
前台接待员岗位职责
2014/01/02 职场文书
汽车制造与装配专业自荐信范文
2014/01/02 职场文书
四风自我剖析材料思想汇报
2014/10/01 职场文书
2014乡镇领导班子四风对照检查材料思想汇报
2014/10/05 职场文书
2014年内部审计工作总结
2014/12/09 职场文书
公司放假通知范文
2015/04/14 职场文书
评奖评优个人先进事迹材料
2015/11/04 职场文书
《水浒传》读后感3篇(范文)
2019/09/19 职场文书
Golang 使用Map实现去重与set的功能操作
2021/04/29 Golang
2021年最新用于图像处理的Python库总结
2021/06/15 Python