php 实现进制转换(二进制、八进制、十六进制)互相转换实现代码

 更新时间:2010年10月22日 16:31:55   作者:  
php 实现进制转换(二进制、八进制、十六进制)互相转换实现代码,需要的朋友可以参考下。
十进制转换为二进制、八进制、十六进制
从十进制向其它进制转换,用的是就用该数字不断除以要转换的进制数,读取余数。连接一起就可以了。
复制代码 代码如下:

<?php
/**
*十进制转二进制、八进制、十六进制 不足位数前面补零*
*
* @param array $datalist 传入数据array(100,123,130)
* @param int $bin 转换的进制可以是:2,8,16
* @return array 返回数据 array() 返回没有数据转换的格式
* @copyright chengmo QQ:8292669
*/
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生成可点击刷新的验证码简单示例

    PHP生成可点击刷新的验证码简单示例

    这篇文章主要介绍了PHP生成可点击刷新的验证码,结合简单实例形式分析了php验证码的实现与调用显示方法,涉及js动态调用验证码php文件的相关技巧,需要的朋友可以参考下
    2016-05-05
  • PHP中ltrim与rtrim去除左右空格及特殊字符实例

    PHP中ltrim与rtrim去除左右空格及特殊字符实例

    这篇文章主要介绍了PHP中ltrim与rtrim去除左右空格及特殊字符的用法,结合实例形式较为详细的说明了ltrim与rtrim的定义,参数作用及去除左右空格与特殊字符的使用技巧,需要的朋友可以参考下
    2016-01-01
  • 详解PHP中mb_strpos的使用

    详解PHP中mb_strpos的使用

    这篇文章主要介绍了详解PHP中mb_strpos的使用,通过使用语法以及实例给大家详细分析了用法,需要的朋友参考学习下。
    2018-02-02
  • php程序效率优化的一些策略小结

    php程序效率优化的一些策略小结

    大家在开发过程中,经常会考虑到一些php的代码的执行效率问题,这样我们的程序才会运行的更加流畅,这里简单的总结小,需要的朋友可以参考下。
    2010-07-07
  • PHP5各个版本的新功能和新特性总结

    PHP5各个版本的新功能和新特性总结

    因为 PHP 那“集百家之长”的语法,加上社区氛围不好,很多人对新版本,新特征并无兴趣,本文将会介绍自 PHP5.2 起,直至 PHP5.6 中增加的新特征
    2014-03-03
  • php 删除一维数组中某一个值元素的操作方法

    php 删除一维数组中某一个值元素的操作方法

    下面小编就为大家分享一篇php 删除一维数组中某一个值元素的操作方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-02-02
  • php天翼开放平台短信发送接口实现方法

    php天翼开放平台短信发送接口实现方法

    这篇文章主要介绍了php天翼开放平台短信发送接口实现方法,是针对短信接口的经典应用,非常具有实用价值,需要的朋友可以参考下
    2014-12-12
  • php获取twitter最新消息的方法

    php获取twitter最新消息的方法

    这篇文章主要介绍了php获取twitter最新消息的方法,涉及php操作curl及正则替换的技巧,非常具有实用价值,需要的朋友可以参考下
    2015-04-04
  • PHP的mysqli_query参数MYSQLI_STORE_RESULT和MYSQLI_USE_RESULT的区别

    PHP的mysqli_query参数MYSQLI_STORE_RESULT和MYSQLI_USE_RESULT的区别

    这篇文章主要介绍了PHP的mysqli_query参数MYSQLI_STORE_RESULT和MYSQLI_USE_RESULT的区别,本文给出了这两个参数的5个区别,需要的朋友可以参考下
    2014-09-09
  • php 判断字符串中是否包含html标签

    php 判断字符串中是否包含html标签

    本篇文章主要是对使用php判断字符串中是否包含html标签的实例代码进行了介绍,需要的朋友可以过来参考下,希望对大家有所帮助
    2014-02-02

最新评论