自己写了一个PHP进制转换程序,一个类吧,第一次写这个东东,写这个东东,在处理文本文件时能用得到。
 
可以实现:
10进制转换2、8、16、36、62进制
2、8、16、36、62进制转换10进制
有点要注意下,2、8、16进制转换时,使用的是系统的自己的函数。
所以,不管怎么高精度转换值可能大于2147483646。
另外,

32进制低精转换,最大值:2147483646;
32进制高精转换,最大值:77309411327;
64进制高精转换,最大值:133143986175。
 
jinzhi.php文件,自带演示功能。
 
<?php
$mtime1 = explode(" ", microtime());
$startTime = $mtime1[] + $mtime1[];
?>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>进制转换</title>
</head>
<body>
<form id="jzh" name="jinzhih" method="post" action="<?php echo $_SERVER['PHP_SELF'].'?p=1';?>">
<input name="go" type="hidden" value="">
<table width="" border="" cellpadding="" cellspacing="" bordercolor="#FFE8E8" bgcolor="#F4F8FB">
<tr>
<td width=""><select name="jinzhi0" id="jinzhi0">
<option value=""></option>
<option value=""></option>
<option value="" selected="selected"></option>
<option value=""></option>
<option value=""></option>
<option value=""></option>
</select>
进制</td>
<td width=""><input name="zhi" type="text" id="zhi" /></td>
</tr>
<tr>
<td>进行<input name="lx" type="radio" value="" checked="checked" />
普通<input type="radio" name="lx" value="" />高精</td><td>&nbsp;</td>
</tr>
<tr>
<td>转换为
<select name="jinzhi1" id="jinzhi1">
<option value="" selected="selected"></option>
<option value=""></option>
<option value=""></option>
<option value=""></option>
<option value=""></option>
<option value=""></option>
</select>进制,</td><td>总长度为
<input name="changdu" type="text" id="changdu" value="" size="" maxlength="" />
字符。</td></tr><tr>
<td><input type="submit" name="Submit" value="提交" /></td>
<td><input type="reset" name="Submit2" value="重置" /></td>
</tr></table>
<p>注意:仅能进行10进制转换为2、、、、62进制;或反转换。</p></form>
<?php
/*
* ===========================================
* 项目: 进制转换
* 版本: 1.0
* 团队: 3Vshej
* 作者: 网游世界
* 功能: 10进制转换2、8、16、36、62进制
2、8、16、36、62进制转换10进制
* ===========================================
* Copyright (c) 2008
* 团队主页: http://www.3vshej.cn
* 团队信箱: 3vshej+163.com[+=@]
* 创建日期: 2008-11-3
* 修改日期: 暂无
* 修改说明: ----
* 版权声明: 免费软件
* ===========================================
*/
class jinzhi_class
{
//10进制转2、8、16、36、62进制 function jinzhih_0($shu,$jinzhi,$w)
{
$zifu = "";
while ($shu!=){
$linshi = $shu%$jinzhi;
switch ($jinzhi){
case :
$zifu = decbin($shu);
return $zifu;
case :
$zifu = decoct($shu);
return $zifu;
case :
$zifu = dechex($shu);
return $zifu;
case :
if ($linshi>=)
{
$zifu.= chr(($linshi+));
}else{
$zifu.= $linshi;}
break;
case :
if (($linshi>=) && ($linshi<)) {$zifu.= chr($linshi+);break;}
if (($linshi>=) && ($linshi<)) {$zifu.= chr($linshi+);break;}
$zifu.= $linshi;break;
default:
$zifu.= $linshi;
break;
}
$shu = intval($shu/$jinzhi);
}
for ($i=strlen($zifu);$i<$w;$i++)
$zifu.="";
return strrev($zifu);} //2、8、16、36、62进制转10进制 function jinzhih_1($zifu,$jinzhi,$w)
{ $shu=;
for ($i=;$i<=strlen($zifu)-;$i++)
{
$linshi = substr($zifu,$i,);
switch ($jinzhi){
case :
$shu = bindec($zifu);
$i=strlen($zifu)+;
break;
case :
$shu = octdec($zifu);
$i=strlen($zifu)+;
break;
case :
$shu = hexdec($zifu);
$i=strlen($zifu)+;
break;
case :
if (ord($linshi)<=)
{$shu+=(ord($linshi)-)*pow($jinzhi,strlen($zifu)-$i-);
}else{
$shu=$shu + (ord($linshi)-)*pow($jinzhi,strlen($zifu)-$i-);}
break;
case :
if (ord($linshi)<=)
{$shu+=$linshi*pow($jinzhi,strlen($zifu)-$i-);
}elseif ((ord($linshi)>=) && (ord($linshi)<=)){
$shu+= (ord($linshi)-)*pow($jinzhi,strlen($zifu)-$i-);
}else{
$shu+= (ord($linshi)-)*pow($jinzhi,strlen($zifu)-$i-);}
break;
}
}
return $shu; } //10进制高精度转换2、8、16、36、62进制 function jinzhih_G0($shu,$jinzhi,$w)
{
$zifu = "";
while ($shu!=){
$linshi = bcmod($shu,$jinzhi);
switch ($jinzhi){
case :
$zifu = decbin($shu);
return $zifu;
case :
$zifu = decoct($shu);
return $zifu;
case :
$zifu = dechex($shu);
return $zifu;
case :
if ($linshi>=)
{
$zifu.= chr(($linshi+));
}else{
$zifu.= $linshi;}
break;
case :
if (($linshi>=) && ($linshi<)) {$zifu.= chr($linshi+);break;}
if (($linshi>=) && ($linshi<)) {$zifu.= chr($linshi+);break;}
$zifu.= $linshi;break;
default:
$zifu.= $linshi;
break;
}
$shu = intval(bcdiv($shu,$jinzhi));
}
for ($i=strlen($zifu);$i<$w;$i++)
$zifu.="";
return strrev($zifu);} //2、8、16、36、62进制高精度转换10进制 function jinzhih_G1($zifu,$jinzhi,$w)
{ $shu= "";
for ($i=;$i<=strlen($zifu)-;$i++)
{
$linshi = substr($zifu,$i,);
switch ($jinzhi){
case :
$shu = bindec($zifu);
$i=strlen($zifu)+;
break;
case :
$shu = octdec($zifu);
$i=strlen($zifu)+;
break;
case :
$shu = hexdec($zifu);
$i=strlen($zifu)+;
break;
case :
if (ord($linshi)<=)
{$shu=bcadd($shu,bcmul((ord($linshi)-),bcpow($jinzhi,strlen($zifu)-$i-)));
}else{
$shu=bcadd($shu,bcmul((ord($linshi)-),bcpow($jinzhi,strlen($zifu)-$i-)));}
break;
case :
if (ord($linshi)<=)
{$shu=bcadd($shu,bcmul($linshi,bcpow($jinzhi,strlen($zifu)-$i-)));
}elseif ((ord($linshi)>=) && (ord($linshi)<=)){
$shu=bcadd($shu,bcmul((ord($linshi)-),bcpow($jinzhi,strlen($zifu)-$i-)));
}else{
$shu=bcadd($shu,bcmul((ord($linshi)-),bcpow($jinzhi,strlen($zifu)-$i-)));
}
break;
}
}
return $shu;}
} if (isset($_GET["p"]))
{if ($_GET["p"]===""){
echo "<p>";
echo "提示:<br>";
echo "32进制低精转换,最大值:2147483646<br>";
echo "32进制高精转换,最大值:77309411327<br>";
echo "64进制高精转换,最大值:133143986175<br>";
echo "</p>"; echo "值为:<font color=#ff0000><b>";
$Fs = new jinzhi_class();
if ($_POST['lx']=="" && $_POST['jinzhi0']=="")
{echo $Fs->jinzhih_0($_POST['zhi'],$_POST['jinzhi1'],$_POST['changdu'])."<br>";} if ($_POST['lx']=="" && $_POST['jinzhi0']=="")
{echo $Fs->jinzhih_G0($_POST['zhi'],$_POST['jinzhi1'],$_POST['changdu']);} if ($_POST['lx']=="" && $_POST['jinzhi0']<>"")
{echo $Fs->jinzhih_1($_POST['zhi'],$_POST['jinzhi0'],$_POST['changdu']);} if ($_POST['lx']=="" && $_POST['jinzhi0']<>"")
{echo $Fs->jinzhih_G1($_POST['zhi'],$_POST['jinzhi0'],$_POST['changdu']);}
}
echo "</b></font>";}
$mtime1 = explode(" ", microtime());
$endTime = $mtime1[] + $mtime1[];
printf ("<br>页面执行时间:%.6fs.</body></html>",$endTime-$startTime);
?>

PHP进制转换[实现2、8、16、36、64进制至10进制相互转换]的更多相关文章

  1. JS-011-颜色进制转换(RGB转16进制;16进制转RGB)

    在网页开发的时候,经常需要进行颜色设置,因而经常需要遇到进行颜色进制转换的问题,例如:RGB转16进制:16进制转RGB),前几天在测试的时候,发现网站的颜色进制转换某类16进制颜色(例如:#0000 ...

  2. python27期day03:字符串详解:整型、可变数据类型和不可变数据类型、进制转换、索引、切片、步长、字符串方法、进制转换、作业题。

    1.%s: a = "我是新力,我喜欢:%s,我钟爱:%s"b = a%("开车","唱跳rap")print(b)2.整型: 整数在Pyt ...

  3. python3 第十九章 - 写一个10进制转任意进制的函数

    我们先回忆下之前所学的进制转换的知识(详见:第十章),10进制转其它进制的方法是: 整数部分,除基取余,逆序排列 小数部分,乘基取整,顺序排列 负数,按绝对值处理 好,假设我们需要转化的数都是正整数, ...

  4. 颜色转换、随机、16进制转换、HSV

    颜色转换.随机.16进制转换.HSV: /** * * *-----------------------------------------* * | *** 颜色转换.随机.16进制转换.HSV * ...

  5. JS中的进制转换以及作用

    js的进制转换, 分为2进制,8进制,10进制,16进制之间的相互转换, 我们直接利用 对象.toString()即可实现: //10进制转为16进制 ().toString() // =>&q ...

  6. SQLSERVER 16进制转10进制

    原码.补码.反码参考: http://www.cnblogs.com/zhangziqiu/archive/2011/03/30/ComputerCode.html 进制转换参考: http://ww ...

  7. js进制转换

    var n = 17; var n2 = n.toString(2); var n8 = "0" + n.toString(8); var n16 = "0x" ...

  8. python模块介绍- binascii:二进制和ASCII互转以及其他进制转换

    20.1 binascii:二进制和ASCII互转作用:二进制和ASCII互相转换. Python版本:1.5及以后版本 binascii模块包含很多在二进制和ASCII编码的二进制表示转换的方法.通 ...

  9. C#的格式化(进制转换|位运算)

    1.首先做一下知识的普及C或c Currency 货币格式D或d Decimal 十进制格式E或e Exponent 指数格式F或f Fixed point (float)固定精度格式G或g Gene ...

  10. 进制转换 hdoj-2031

    进制转换,原题目:hdoj-2031 题目描述: 输入两个整数,十进制数n(32位整数)和进制r(2<=r<=16 r!=10),求转换后的数. 输入: 7 2 23 12 -4 3 输出 ...

随机推荐

  1. SIP消息类型和消息格式

    转自:http://blog.chinaunix.net/uid-1797566-id-2840904.html sip消息类型和消息格式 SIP是一个基于文本的协议,使用的是UTF-8字符集. SI ...

  2. Controller和RestController的区别

    1. Controller, RestController的共同点 都是用来表示Spring某个类的是否可以接收HTTP请求 2.  Controller, RestController的不同点 @C ...

  3. 百度编辑器同一id重复调用不能生效的办法

    在使用js 调用表单组件模板的时候,表单内有一个编辑框 第一次调出的时候,百度编辑器正常显示,关闭后,再打开,百度编辑器不能显示 原因:第一次使用的时候, UE.getEditor('node_con ...

  4. Sqlite-Sqlite3中的数据类型

    大多数的数据库引擎(到现在据我们所知的除了sqlite的每个sql数据库引擎)都使用静态的.刚性的类型,使用静态类型,数据的类型就由它的容器决定,这个容器是这个指被存放的特定列. Sqlite使用一个 ...

  5. mysql多实例介绍及配置

    mysql多实例介绍及配置 1.mysql多实例介绍 1.1 什么是mysql多实例 mysql多实例就是在一台机器上开启多个不同的服务端口(如:3306,3307),运行多个MySQL服务进程,通过 ...

  6. 从0x00到0xFF的含义以及二进制到10进制的转换(转)

    转载自: http://www.cnblogs.com/brice/p/5343322.html 对于二进制来说,8位二进制我们称之为一个字节,二进制的表达范围值是从0b00000000-0b1111 ...

  7. C# SQLite 创建数据库的方法增删查改语法和命令

    SQLite介绍 SQLite是一个开源.免费的小型RDBMS(关系型数据库),能独立运行.无服务器.零配置.支持事物,用C实现,内存占用较小,支持绝大数的SQL92标准. SQLite数据库官方主页 ...

  8. The WebSocket Protocol

      [Docs] [txt|pdf] [draft-ietf-hybi-t...] [Diff1] [Diff2] [Errata] Updated by: 7936 PROPOSED STANDAR ...

  9. [Webpack] Detect Unused Code with Webpack and unused-files-webpack-plugin

    As you refactor and modify applications, it's difficult to manage and keep track of files as they be ...

  10. EffectiveJava(28)怎么利用有限制的通配符类型来提升API的灵活性

    有时候,我们需要的灵活性要比不可变类型所能提供的更多.所以针对一些通用性的方法,通常用泛型代替固定的数据类型,特别是当你要将某个方法打包成Jar的时候. 结合之前的例子,我们增加尝试用有限制的通配符类 ...