php 实现进制相互转换_.docx

上传人:啊飒飒 文档编号:11633487 上传时间:2021-08-27 格式:DOCX 页数:8 大小:13.24KB
返回 下载 相关 举报
php 实现进制相互转换_.docx_第1页
第1页 / 共8页
php 实现进制相互转换_.docx_第2页
第2页 / 共8页
php 实现进制相互转换_.docx_第3页
第3页 / 共8页
php 实现进制相互转换_.docx_第4页
第4页 / 共8页
php 实现进制相互转换_.docx_第5页
第5页 / 共8页
亲,该文档总共8页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《php 实现进制相互转换_.docx》由会员分享,可在线阅读,更多相关《php 实现进制相互转换_.docx(8页珍藏版)》请在三一文库上搜索。

1、php 实现进制相互转换_ 从十进制向其它进制转换,用的是就用该数字不断除以要转换的进制数,读取余数。连接一起就可以了。 ?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

2、,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($num0) $t=$arr$num%$bin.$t; $num=floor($num/$bin); $tlen=str

3、len($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 C

4、ontent-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*23+1*22+0*21+1*20 代码: ?php /* *二进制、八进制、十六进制 转十进制* * * param array $datalist 传入数据array(df,ef) * para

5、m int $bin 转换的进制可以是:2,8,16 * return array 返回数据 array() 返回没有数据转换的格式 * copyright chengmo :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 $datali

6、st; /为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+; $aOutD

7、ata=$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() 这里只是实现思路而已。 .

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 科普知识


经营许可证编号:宁ICP备18001539号-1