aalmair
شنبه 04 آبان 1392, 15:40 عصر
http://code.aalma.ir/article.php?c=1
(http://code.aalma.ir/article.php?c=1)
جهت تبدیل به هر مبنایی جدول مبنای مورد نظر را در خط سوم قرار دهید
برای مثال :
باینری = '01'
هشتایی = '01234567'
64 تایی = '_-ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwx yz0123456789'
کاریرد اصلی این قطعه کد فشرده سازی یک عدد و در سایت های مثل "کوتاه کننده ی آدرس وب سایت" استفاده می شود
<?php
header("Content-Type: text/html; charset=utf-8");
class BaseConvert{
var $chars='0123456789abcdef'; // convert to hex
public function __construct(){
$table=$this->chars;
$size=strlen($table);
if($size<=1){
die('تعداد کاراکتر ها بیشتر از یک می باشد.') ;
}
for($i=0;$i<$size;$i++){
for($j=0;$j<$i;$j++){
if($table[$i]==$table[$j]){
die('کاراکتر تکراری غیر مجاز است') ;
}
}
}
}
public function number2base($int_str=""){
$size_int=strlen($int_str) ;
$t=0;
$table=$this->chars;
$size_table=strlen($table);
while($t<$size_int&&$int_str[$t]==" "){
$t++;
}
$size_int-=$t;
$int_str=substr($int_str,$t);
if(!is_numeric($int_str)) {
return 0;
}else{
for($j=0;$j<$size_int;$j++){
if($int_str[$j]=="."){
return 0;
}
}
}
$rev=array();
$res="";
while($int_str>=1){
$rev[]=bcmod($int_str,$size_table);
$int_str=bcdiv ($int_str,$size_table);
}
for($i=count($rev)-1;$i>=0;$i--){
$res.=$table[$rev[$i]];
}
return($res);
}
public function base2number($str=""){
$table=$this->chars;
$size_str=strlen($str);
$size_table=strlen($table);
$rev=array();
$res="0";
for($j=0;$j<$size_str;$j++){
$is_true=0;
for($i=0;$i<$size_table;$i++){
if($str[$j]==$table[$i]){
$is_true=1;
$res=bcmul($size_table,$res)+$i;
break;
}
}
if(!$is_true){
die('error');
return 0;
}
}
return ($res);
}
}
$t=new BaseConvert();
$number='255';
$en=$t->number2base($number);
$de=$t->base2number($en);
echo "<div dir=rtl><span>تبدیل : </span><span style='color:blue;font-size:150%;'>".$en."</span>";
echo '<br>';
echo "<span>برعکس :</span><span style='color:blue;font-size:150%;'>".$de."</span></div>";
?>
(http://code.aalma.ir/article.php?c=1)
جهت تبدیل به هر مبنایی جدول مبنای مورد نظر را در خط سوم قرار دهید
برای مثال :
باینری = '01'
هشتایی = '01234567'
64 تایی = '_-ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwx yz0123456789'
کاریرد اصلی این قطعه کد فشرده سازی یک عدد و در سایت های مثل "کوتاه کننده ی آدرس وب سایت" استفاده می شود
<?php
header("Content-Type: text/html; charset=utf-8");
class BaseConvert{
var $chars='0123456789abcdef'; // convert to hex
public function __construct(){
$table=$this->chars;
$size=strlen($table);
if($size<=1){
die('تعداد کاراکتر ها بیشتر از یک می باشد.') ;
}
for($i=0;$i<$size;$i++){
for($j=0;$j<$i;$j++){
if($table[$i]==$table[$j]){
die('کاراکتر تکراری غیر مجاز است') ;
}
}
}
}
public function number2base($int_str=""){
$size_int=strlen($int_str) ;
$t=0;
$table=$this->chars;
$size_table=strlen($table);
while($t<$size_int&&$int_str[$t]==" "){
$t++;
}
$size_int-=$t;
$int_str=substr($int_str,$t);
if(!is_numeric($int_str)) {
return 0;
}else{
for($j=0;$j<$size_int;$j++){
if($int_str[$j]=="."){
return 0;
}
}
}
$rev=array();
$res="";
while($int_str>=1){
$rev[]=bcmod($int_str,$size_table);
$int_str=bcdiv ($int_str,$size_table);
}
for($i=count($rev)-1;$i>=0;$i--){
$res.=$table[$rev[$i]];
}
return($res);
}
public function base2number($str=""){
$table=$this->chars;
$size_str=strlen($str);
$size_table=strlen($table);
$rev=array();
$res="0";
for($j=0;$j<$size_str;$j++){
$is_true=0;
for($i=0;$i<$size_table;$i++){
if($str[$j]==$table[$i]){
$is_true=1;
$res=bcmul($size_table,$res)+$i;
break;
}
}
if(!$is_true){
die('error');
return 0;
}
}
return ($res);
}
}
$t=new BaseConvert();
$number='255';
$en=$t->number2base($number);
$de=$t->base2number($en);
echo "<div dir=rtl><span>تبدیل : </span><span style='color:blue;font-size:150%;'>".$en."</span>";
echo '<br>';
echo "<span>برعکس :</span><span style='color:blue;font-size:150%;'>".$de."</span></div>";
?>