php 实现进制相互转换
来源:互联网 发布:筒灯选择 知乎 编辑:程序博客网 时间:2024/05/18 11:50
<?php
//echo decbin(12);
/*function getval($n) {
$str = 0;
while($n!=0) {
//var_dump('000');
//exit;
if($n%2!=1) {
echo '999';
echo $str;
$str.=$n%2;
}
if($n%2==1)
{
echo '777';
echo $str;
$str.=$n%2;
}
return $str;
}//while end
//return $str;
}
$n = 13;
echo getval($n);
*/
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);
//var_dump($datalist); //array(1) { [0]=> int(12) }
if($bin==10) return $datalist; //相同进制忽略
$bytelen=ceil(16/$bin); //获得如果是$bin进制,一个字节的长度
//var_dump($bytelen); //float(8)
$aOutChar=array();
foreach ($datalist as $num)
{
$t="";
$num=intval($num);
//var_dump($num); //int(12)
if($num===0) continue;
while($num>0)
{
//var_dump($num); //int(12) float(6) float(3) float(1)
//var_dump($bin); //int(2) int(2) int(2) int(2)
//var_dump($num%$bin); //int(0) int(0) int(1) int(1)
//var_dump($arr[$num%$bin]); //int(0) int(0) int(1) int(1)
$t=$arr[$num%$bin].$t;
//var_dump($t); //string(1) "0" string(2) "00" string(3) "100" string(4) "1100"
$num=floor($num/$bin);
//var_dump($num); //float(6) float(3) float(1) float(0)
}
//var_dump($t); //string(4) "1100"
$tlen=strlen($t);
//var_dump($tlen); //int(4)
//var_dump($tlen%$bytelen); //int(4)
if($tlen%$bytelen!=0)
{
$pad_len=$bytelen-$tlen%$bytelen;
//var_dump($pad_len); //float(4)
$t=str_pad("",$pad_len,"0",STR_PAD_LEFT).$t; //不足一个字节长度,自动前面补充0
}
//var_dump($t); //string(8) "00001100"
$aOutChar[]=$t;
}//foreach end
return $aOutChar;
}
//var_dump(decto_bin(array(12),2)); //array(1) { [0]=> string(8) "00001100" }
//var_dump(decto_bin(array(12),10)); //array(1) { [0]=> int(12) }
var_dump(decto_bin(array(12),2));
//var_dump(decto_bin(array(128,253),8));
//var_dump(decto_bin(array(128,253),16));
?>
//echo decbin(12);
/*function getval($n) {
$str = 0;
while($n!=0) {
//var_dump('000');
//exit;
if($n%2!=1) {
echo '999';
echo $str;
$str.=$n%2;
}
if($n%2==1)
{
echo '777';
echo $str;
$str.=$n%2;
}
return $str;
}//while end
//return $str;
}
$n = 13;
echo getval($n);
*/
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);
//var_dump($datalist); //array(1) { [0]=> int(12) }
if($bin==10) return $datalist; //相同进制忽略
$bytelen=ceil(16/$bin); //获得如果是$bin进制,一个字节的长度
//var_dump($bytelen); //float(8)
$aOutChar=array();
foreach ($datalist as $num)
{
$t="";
$num=intval($num);
//var_dump($num); //int(12)
if($num===0) continue;
while($num>0)
{
//var_dump($num); //int(12) float(6) float(3) float(1)
//var_dump($bin); //int(2) int(2) int(2) int(2)
//var_dump($num%$bin); //int(0) int(0) int(1) int(1)
//var_dump($arr[$num%$bin]); //int(0) int(0) int(1) int(1)
$t=$arr[$num%$bin].$t;
//var_dump($t); //string(1) "0" string(2) "00" string(3) "100" string(4) "1100"
$num=floor($num/$bin);
//var_dump($num); //float(6) float(3) float(1) float(0)
}
//var_dump($t); //string(4) "1100"
$tlen=strlen($t);
//var_dump($tlen); //int(4)
//var_dump($tlen%$bytelen); //int(4)
if($tlen%$bytelen!=0)
{
$pad_len=$bytelen-$tlen%$bytelen;
//var_dump($pad_len); //float(4)
$t=str_pad("",$pad_len,"0",STR_PAD_LEFT).$t; //不足一个字节长度,自动前面补充0
}
//var_dump($t); //string(8) "00001100"
$aOutChar[]=$t;
}//foreach end
return $aOutChar;
}
//var_dump(decto_bin(array(12),2)); //array(1) { [0]=> string(8) "00001100" }
//var_dump(decto_bin(array(12),10)); //array(1) { [0]=> int(12) }
var_dump(decto_bin(array(12),2));
//var_dump(decto_bin(array(128,253),8));
//var_dump(decto_bin(array(128,253),16));
?>
阅读全文
0 0
- php 实现进制相互转换
- php 实现进制相互转换
- 64和10进制的相互转换-PHP实现
- php实现文件与16进制相互转换
- php进制之间相互转换
- PHP 字符串与16进制相互转换
- php 文件与16进制相互转换
- 使用java语言实现进制之间的相互转换
- 利用python实现任意进制的相互转换
- 使用java语言实现进制之间的相互转换
- 用php实现xml与json之间的相互转换
- 用php实现xml与json之间的相互转换
- PHP实现Unicode和Utf-8编码相互转换
- PHP实现url查询字符串与数组相互转换
- 任意进制相互转换
- 进制相互转换 模块
- 进制的相互转换
- PHP 字符串二进制相互转换
- 如何让vim编辑器永久显示行号
- Odd Even Linked List
- 不用加减乘除做加法
- expdp及impdp中的exclude及include参数
- PAT (Basic Level) Practise (中文) 1070. 结绳(25)
- php 实现进制相互转换
- 后端springmvc,前端html5的FormData实现文件断点上传
- SpringQuartz 定时器 java
- Python 用pyinstaller生成可执行文件No module named 'pefile'
- WKWebView之OC代码注入,删除百度HTML页面的按钮
- Android 最常用的设计模式九 安卓源码分析—— 适配器模式(Adapter)
- Java虚拟机(JVM)中的内存设置详解
- Linux vi 撤销与取消撤销
- mybatis执行批量更新batch update 的方法