PHP实现十进制、二进制、八进制和十六进制转换
本文实例讲述了PHP实现十进制、二进制、八进制和十六进制转换相关函数用法。分享给大家供大家参考,具体如下
1.二进制
1.1.二进制转十进制
函数bindec(string $binary_string)
@param $binary_string 参数表示所要转换的二进制字符串。
@return 返回与$binary_string参数所表示的二进制数的十进制数等价值。
函数说明
bindec()
将一个二进制数转换成Integer类型或者出于大小的需要,转换为float类型。
bindec()
将所有的$binary_string值解释为无符号整数。这是因为bindec()函数将其最高有效位视为数量级而非符号位。【即最高位0或1并不被bindec()表示为+或-而是按值来表示1就是1,0就是0】
注意参数必须为字符串,使用其他的数据类型会导致不可预知的结果。
范例
<?php echo bindec('10010') . "\n"; echo bindec('00110') . "\n"; echo bindec('1111') . "\n";
以上程序语句会依次输出18,6,15
1.2.二进制转十六进制
函数bin2hex(string $str)
@param $str 将要转换的ASCII字符的字符串。
@return 返回转换字符串的十六进制值。
函数说明
bin2hex()
函数把 ASCII 字符的字符串转换为十六进制值。字符串可通过使用 pack() 函数再转换回去。
bin2hex()
函数转换使用字节方式,高四位字优先。
范例
(1)bin2hex()
转换‘chengdu'为十六进制值
<?php $str = bin2hex('chengdu'); echo $str;
以上程序语句会输出6368656e676475
(2)把一个字符串值从二进制转换为十六进制,再转换回去
<?php $str = 'chengdu'; echo bin2hex($str) . "<br/>"; echo pack("H", bin2hex($str)) . "<br/>";
以上程序语句依次输出6368656e676475, chengdu
2.八进制
2.1.八进制转十进制
函数octdec(string $octal_string)
@param $octal_string 参数表示将要转换的八进制字符串。
@return 返回$octal_string参数所表示的八进制数的十进制等值。
函数说明
octdec()
可以处理Integer大数字,但在这种情况下它会返回float类型。
范例
<?php echo octdec( '010' ) . "\n"; echo octdec( decoct( 45 ) );
以上程序语句会输出8, 45
3.十进制
3.1.十进制转二进制
函数decbin(int $number)
@param $number 所要转换的十进制数字,所能转换的最大数值为十进制的4294967295,其decbin结果为 32 个 1 的字符串。
@return 返回十进制数字转换后的二进制字符串。
函数说明
decbin()
函数所能转换的最大十进制数值为4294967295,其结果为 32 个 1 的字符串。
范例
<?php echo decbin ( 10 ) . "\n"; echo decbin ( 50 );
以上程序语句会输出1010, 110010
3.2.十进制转八进制:
函数decoct(int $number)
@param $number 所要转换的十进制数字,所能转换的最大数值是十进制的4294967295,其decoct()结果为 "37777777777"。
@return 返回一个包含有给定$number参数的八进制表示的字符串。
函数说明
decoct()
函数所能转换的最大十进制数数值为4294967295,其结果为 "37777777777"。
范例
<?php echo decoct ( 10 ) . "\n" ; echo decoct ( 50 );
以上程序语句会依次输出12, 62
3.3.十进制转十六进制
函数dechex(int $number)
@param $number 将要转换的十进制数字。
@return 返回一个包含给定$number参数的十六进制表示的字符串。
函数说明
dechex()
函数所能转换的十进制的最大数值是PHP_INT_MAX2 +/- 1,在32位系统上是十进制的4294967295,其dechex()
的结果为ffffffff。
注意PHP的Integer类型是有符号的,dechex()只能处理无符号整数,负整数会以无符号来处理。
范例
<?php echo dechex ( 10 ) . "\n" ; echo dechex ( 58 );
以上程序语句会依次输出a, 3a
4.十六进制
4.1.十六进制转二进制
函数hex2bin(string $data);
转换十六进制字符串为二进制字符串
@param $data 使用十六进制表示的数据。
@return 返回给定数据的二进制字符串或者在失败时返回FALSE。
函数说明
如果输入的十六进制字符串是奇数长度或者是无效的十六进制字符串,则会抛出一个E_WARNING级别的错误。
范例
<?php $hex = hex2bin ( "6368656e67206475" ); echo $hex;
以上程序语句会输出:cheng du
4.2十六进制转十进制
函数hexdec(string $hex_string);
转换十六进制字符串为二进制字符串
@param $hex_string 将要转换的十六进制的字符串。
@return 返回与$hex_string参数所表示的十六进制数等值的十进制数。
函数说明
hexdec()
会忽略它遇到的任意非十六进制的字符。
PHP 4.1.0 开始,该函数可以处理 integer大数字,这种情况下,它会返回float类型。
范例
<?php var_dump ( hexdec ( "See" )); var_dump ( hexdec ( "ee" )); // 上面两个都输出: "int(238)" var_dump ( hexdec ( "that" )); // 输出"int(10)" var_dump ( hexdec ( "a0" )); // 输出"int(160)" //通过上面的例子可以看出来hexdec()会忽略它遇到的任意非十六进制的字符。
5.任意进制转换的base_convert() 函数
函数base_convert(string $number, int $frombase, int $tobase)
@param $number 将要转换的的数。
@param $frombase参数$number的进制。
@param $tobase 将要转换成的进制。
@return 返回一个包含$number以$tobase进制表示的字符串。
函数说明
$number本身的进制由$formbase来指定。
$formbase和$tobase都只能是2和36(包括2和36)之间的整数值。
注意由于使用内部的 "double" 或 "float" 类型,base_convert()的操作可能会导致大数值中的精度丢失。
范例
<?php $hexadecimal = 'A37334' ; echo base_convert ( $hexadecimal , 16 , 2 ); //print 101000110111001100110100 echo base_convert ( $hexadecimal , 16 , a); //print 10711860
PS这里再为大家推荐几款计算与转换工具供大家参考使用
在线任意进制转换工具
科学计算器在线使用_高级计算器在线计算
在线计算器_标准计算器
更多关于PHP相关内容感兴趣的读者可查看本站专题《》、《》、《》、《》、《》、《》及《》
希望本文所述对大家PHP程序设计有所帮助。
编程语言
- 如何快速学会编程 如何快速学会ug编程
- 免费学编程的app 推荐12个免费学编程的好网站
- 电脑怎么编程:电脑怎么编程网咯游戏菜单图标
- 如何写代码新手教学 如何写代码新手教学手机
- 基础编程入门教程视频 基础编程入门教程视频华
- 编程演示:编程演示浦丰投针过程
- 乐高编程加盟 乐高积木编程加盟
- 跟我学plc编程 plc编程自学入门视频教程
- ug编程成航林总 ug编程实战视频
- 孩子学编程的好处和坏处
- 初学者学编程该从哪里开始 新手学编程从哪里入
- 慢走丝编程 慢走丝编程难学吗
- 国内十强少儿编程机构 中国少儿编程机构十强有
- 成人计算机速成培训班 成人计算机速成培训班办
- 孩子学编程网上课程哪家好 儿童学编程比较好的
- 代码编程教学入门软件 代码编程教程