php16进制转10进制
<?php
$str="abcdefg";//写你想要算的
字符串
;
$v;
function
getv($s){
$arr=str_split($s,1);
for
($i=0;$i<strlen($s);$i++)
{
$v=gett($arr[$i])*getw(strlen($s)-$i-1)+$v;
}
echo
$v;
}
function
getw($w){
$x=1;
for
($i=0;$i<$w;$i++){
$x=26*$x;
}
return
$x;
}
function
gett($ch){
return
(ord($ch)-96);
}
echo
getv($str);
?>
虽然不难,但是麻烦.这题没意思;
注:getv计算总结果;
gett计算
字母
代表的数字;
getw计算
权值
;
❷ PHP数据类型里的整型的问题(10进制和8进制)
十六进制转十进制:0X1A中0X是16进制的开始位,A代表10,1A=10*16^0 + 1 * 16^1 = 10+16=26.
A,B,C,D,E,F这六个字母来分别表示10,11,12,13,14,15。字母不区分大小写。
十六进制数的第0位的权值为16的0次方,第1位的权值为16的1次方,第2位的权值为16的2次方,依次类推。
八进制转十进制:0是8进制的开始位,123=3*8^0+2*8^1+1*8^2=83.
八进制数的第0位的权值为8的0次方,第1位的权值为8的1次方,第2位的权值为8的2次方,依次类推。
整型一般就是10,8,16进制,2进制一般用于存储。
❸ php 16进制计算转换十进制
因为人类用的是十进制记数法,所以计算机大都在默认情况下输出十进制,所以是十进制36,除非你有意转换让显示十六进制或其他进制的数。至于二进制、八进制有什么前缀,那要看你使用的是什么编程语言,C/C++的十六进制输入前缀是0x,八进制输入前缀是o,没有二进制前缀,也不支持用二进制输入。输出当然可以但也没有前缀,有时人们在输出的二进制数后面加一个大写的B,不一而论。但要注意,凡输出的前缀、后缀是人们在程序中有意加入的,只有输入的前缀是系统要求的。
❹ 各种进制转换方法
一)、数制
计算机中采用的是二进制,因为二进制具有运算简单,易实现且可靠,为逻辑设计提供了有利的途径、节省设备等优点,为了便于描述,又常用八、十六进制作为二进制的缩写。
一般计数都采用进位计数,其特点是:
(1)逢N进一,N是每种进位计数制表示一位数所需要的符号数目为基数。
(2)采用位置表示法,处在不同位置的数字所代表的值不同,而在固定位置上单位数字表示的值是确定的,这个固定位上的值称为权。
在计算机中:D7 D6 D5 D4 D3 D2 D1 D0 只有两种0和1
8 4 2 1
二)、数制转换
不同进位计数制之间的转换原则:不同进位计数制之间的转换是根据两个有理数如相等,则两数的整数和分数部分一定分别相等的原则进行的。也就是说,若转换前两数相等,转换后仍必须相等。
有四进制
十进制:有10个基数:0 ~~ 9 ,逢十进一
二进制:有2 个基数:0 ~~ 1 ,逢二进一
八进制:有8个基数:0 ~~ 7 ,逢八进一
十六进制:有16个基数:0 ~~ 9,A,B,C,D,E,F (A=10,B=11,C=12,D=13,E=14,F=15) ,逢十六进一
1、数的进位记数法
N=a n-1*p n-1+a n-2*p n-2+…+a2*p2+a1*p1+a0*p0
2、十进制数与P进制数之间的转换
①十进制转换成二进制:十进制整数转换成二进制整数通常采用除2取余法,小数部分乘2取整法。例如,将(30)10转换成二进制数。
将(30)10转换成二进制数
2| 30 ….0 ----最右位
2 15 ….1
2 7 ….1
2 3 ….1
1 ….1 ----最左位
∴ (30)10=(11110)2
将(30)10转换成八、十六进制数
8| 30 ……6 ------最右位
3 ------最左位
∴ (30)10 =(36)8
16| 30 …14(E)----最右位
1 ----最左位
∴ (30)10 =(1E)16
3、将P进制数转换为十进制数
把一个二进制转换成十进制采用方法:把这个二进制的最后一位乘上20,倒数第二位乘上21,……,一直到最高位乘上2n,然后将各项乘积相加的结果就它的十进制表达式。
把二进制11110转换为十进制
(11110)2=1*24+1*23+1*22+1*21+0*20=
=16+8+4+2+0
=(30)10
把一个八进制转换成十进制采用方法:把这个八进制的最后一位乘上80,倒数第二位乘上81,……,一直到最高位乘上8n,然后将各项乘积相加的结果就它的十进制表达式。
把八进制36转换为十进制
(36)8=3*81+6*80=24+6=(30)10
把一个十六进制转换成十进制采用方法:把这个十六进制的最后一位乘上160,倒数第二位乘上161,……,一直到最高位乘上16n,然后将各项乘积相加的结果就它的十进制表达式。
把十六制1E转换为十进制
(1E)16=1*161+14*160=16+14=(30)10
3、二进制转换成八进制数
(1)二进制数转换成八进制数:对于整数,从低位到高位将二进制数的每三位分为一组,若不够三位时,在高位左面添0,补足三位,然后将每三位二进制数用一位八进制数替换,小数部分从小数点开始,自左向右每三位一组进行转换即可完成。例如:
将二进制数1101001转换成八进制数,则
(001 101 001)2
| | |
( 1 5 1)8
( 1101001)2=(151)8
(2)八进制数转换成二进制数:只要将每位八进制数用三位二进制数替换,即可完成转换,例如,把八进制数(643.503)8,转换成二进制数,则
(6 4 3 . 5 0 3)8
| | | | | |
(110 100 011 . 101 000 011)2
(643.503)8=(110100011.101000011)2
4、二进制与十六进制之间的转换
(1)二进制数转换成十六进制数:由于2的4次方=16,所以依照二进制与八进制的转换方法,将二进制数的每四位用一个十六进制数码来表示,整数部分以小数点为界点从右往左每四位一组转换,小数部分从小数点开始自左向右每四位一组进行转换。
(2)十六进制转换成二进制数
如将十六进制数转换成二进制数,只要将每一位十六进制数用四位相应的二进制数表示,即可完成转换。
例如:将(163.5B)16转换成二进制数,则
( 1 6 3 . 5 B )16
| | | | |
(0001 0110 0011. 0101 1011 )2
(163.5B)16=(101100011.01011011)2
❺ PHP 浮点进制转换
下面是php实现的方法:
/**
*十六进制浮点型转为十进制
*@paramString$strHex十六进制浮点数
*/
functionhexToDecFloat($strHex){
$v=hexdec($strHex);
$x=($v&((1<<23)-1))+(1<<23)*($v>>31|1);
$exp=($v>>23&0xFF)-127;
return$x*pow(2,$exp-23);
}
你说得很高深的样子,又不举例,不知道你究竟需要把什么样子的数转换成什么,上面是例子看看是不是你要的吧,如果不是,请一定举例。
❻ PHP10进制与16进制转换算法求解
不是有一个自带的函数吗?dechex -- 十进制转换为十六进制
❼ PHP16进制格式字符串,转换成具体值的方法
最简单的就是base_convert()函数,可以实现2进制,8进制,10进制,16进制间的任意转换,
还有hexdec()可以实现16进制转换成10进制。
❽ PHP中关于进制转换获得IP
先转为10进制,然后long2ip(),比如long2ip(340154),16转10进制函数:hexdec(cac82082)
❾ 前几天看到一个PHP面试题,代码复制到环境中结果是400000,怎么想也想不通,哪位大神指点一下。
$a=0x01;//16进制转化成10进制1
$b=0x02;//2
<< 是位运算 意思是 1<<2 ,这个1是二进制的1,将1向左移2位即100(不够就补0),在转换成10进制是4
再举个例子 5<<3,5的二进制101,好理解写成000101,向左移三位即101000,10进制后40
printf("%x",($a<<$b.$b));就是 printf("%x",(1<<22));
得到的是10000000000000000000000,十进制就是4194304,你带进去printf("%x",4194304);
❿ 如何php打印16进制和16进制转10进制
<?php
$a=0x20;
//打印十六进制
printf("0x%x",$a);//结果0x20
?>
<?php
$a=0x20;
//打印十六进制
echo'0x'.dechex($a);//结果0x20
//hexdec--十六进制转换为十进制
echohexdec($a);//结果50