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的5个入手程序
Nov 23 PHP
一个捕获函数输出的函数
Feb 14 PHP
PHP 用数组降低程序的时间复杂度
Dec 04 PHP
php对数组排序代码分享
Feb 24 PHP
PHP输出英文时间日期的安全方法(RFC 1123格式)
Jun 13 PHP
ThinkPHP结合ajax、Mysql实现的客户端通信功能代码示例
Jun 23 PHP
ThinkPHP使用PHPExcel实现Excel数据导入导出完整实例
Jul 22 PHP
php短网址和数字之间相互转换的方法
Mar 13 PHP
Smarty最简单实现列表奇偶变色的方法
Jul 01 PHP
ThinkPHP2.x防范XSS跨站攻击的方法
Sep 25 PHP
php获取图片信息的方法详解
Dec 10 PHP
PHP页面跳转操作实例分析(header方法)
Sep 28 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获取类中常量,属性,及方法列表的方法
2009/04/09 PHP
php smarty模版引擎中的缓存应用
2009/12/11 PHP
使用php统计字符串中中英文字符的个数
2013/06/23 PHP
PHP邮件群发机实现代码
2016/02/16 PHP
PHP实现可自定义样式的分页类
2016/03/29 PHP
TP(thinkPHP)框架多层控制器和多级控制器的使用示例
2018/06/13 PHP
Yii2框架配置文件(Application属性)与调试技巧实例分析
2019/05/27 PHP
浅析PHP echo 和 print 语句
2020/06/30 PHP
jQuery 对象中的类数组操作
2009/04/27 Javascript
ExtJS Grid使用SimpleStore、多选框的方法
2009/11/20 Javascript
javascript getElementsByClassName函数
2010/04/01 Javascript
jQuery实现回车键(Enter)切换文本框焦点的代码实例
2014/05/05 Javascript
[原创]推荐10款最热门jQuery UI框架
2014/08/19 Javascript
AngularJS入门教程之Hello World!
2014/12/06 Javascript
jQuery EasyUI 入门必看
2016/06/03 Javascript
bootstrap实现每隔5秒自动轮播效果
2016/12/20 Javascript
JavaScript编写九九乘法表(两种任选)
2017/02/04 Javascript
Vue 利用指令实现禁止反复发送请求的两种方法
2019/09/15 Javascript
Vant picker 多级联动操作
2020/11/02 Javascript
python 实现删除文件或文件夹实例详解
2016/12/04 Python
python获取交互式ssh shell的方法
2019/02/14 Python
基于django传递数据到后端的例子
2019/08/16 Python
YSL圣罗兰美妆美国官网:Yves Saint Lauret US
2016/11/21 全球购物
西班牙在线宠物商店:zooplus.es
2017/02/24 全球购物
Sport-Thieme荷兰:购买体育用品
2019/08/25 全球购物
三年大学自我鉴定
2014/01/16 职场文书
股东协议书
2014/04/14 职场文书
毕业大学生自荐信
2014/06/17 职场文书
学校工作推荐信范文
2014/07/11 职场文书
岗位安全生产责任书
2014/07/28 职场文书
2014年房地产销售工作总结
2014/12/01 职场文书
2015关爱留守儿童工作总结
2014/12/12 职场文书
董事长岗位职责
2015/02/13 职场文书
python 下载文件的几种方式分享
2021/04/07 Python
Spring mvc是如何实现与数据库的前后端的连接操作的?
2021/06/30 Java/Android
Go 语言结构实例分析
2021/07/04 Golang