自己写了一个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. windows 线程同步

    Windows 临界区,内核事件,互斥量,信号量. 临界区,内核事件,互斥量,信号量,都能完成线程的同步,在这里把他们各自的函数调用,结构定义,以及适用情况做一个总结. 临界区: 适用范围:它只能同步 ...

  2. 四.rocketMQ原理

    ⦁    mqnamesrv服务 broker启动的时候(单个.多个),都会去查找namesrv注册. Producer发生消息的时候会根据topic获取路由到broker的信息. Consumer根 ...

  3. cmake处理多源文件目录的方法

    cmake处理源代码分布在不同目录中的情况也很简单,现在假设我们的源代码分布情况如下: 源代码的分布情况 其中src目录下的文件要编译成一个链接库 第一步,项目主目录中的CMakelist.txt 在 ...

  4. Android MIFARE NFCA源码解析

    Android MIFARE NFCA源码解析TagTechnology定义了所有标签的共有接口类BasicTagTechnology 实现了TagTechnology的一些接口 再有具体的标签协议继 ...

  5. Oracle 10g数据库备份与恢复操作手册

    Oracle 10g数据库备份与恢复操作手册 目录 Oracle 10g数据库备份与恢复操作手册... 前言... 文档目的... 文档范围... 目标读者... 其他说明... 冷备份... 热备份 ...

  6. Git系列一之安装管理

    1.Git安装部署 Git是分布式的版本控制系统,我们只要有了一个原始Git版本仓库,就可以让其他主机克隆走这个原始版本仓库,从而使得一个Git版本仓库可以被同时分布到不同的主机之上,并且每台主机的版 ...

  7. 【算法导论C++代码】最大子数组

    #define Inf 65535 #include <iostream> using namespace std; void FindMaxCrossingSubarray(int *A ...

  8. 手机端UC浏览器,在java开发的下载功能中存在的问题?

    在java web开发中,不同浏览器对下载文件的格式有不同的要求,有时会出现视频,音频等文件无法下载的问题.我在开发中,也遇到类似的问题,觉得很苦恼. 经过百度和请教学习,得到2个解决方案. 首先得到 ...

  9. 【树莓派】【转载】Raspberry Pi (树莓派)折腾记

    在网上看到一篇对树莓派折腾记录比较详细的文章,时间比较早,但是有些东西没变. 对于新手而言,还是有点参考价值.文章参见:http://skypegnu1.blog.51cto.com/8991766/ ...

  10. 易语言调用csharp写的COM组件的程序在Win2008上奔溃的解决办法

    易语言调用csharp写的COM组件,除了要注册csharp写的dll之外(由于是.net代码,需要用.net自带的注册工具RegAsm.exe注册,具体注册方法为: C:\WINDOWS\Micro ...