PHP实现十进制、二进制、八进制和十六进制转换相关函数用法分析


Posted in PHP onApril 25, 2017

本文实例讲述了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_MAX*2 +/- 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
PHP 相关文章推荐
PHP 开发环境配置(测试开发环境)
Apr 28 PHP
使用PHP实现Mysql读写分离
Jun 28 PHP
在Ubuntu 14.04上部署 PHP 环境及 WordPress
Sep 02 PHP
php中使用PHPExcel读写excel(xls)文件的方法
Sep 15 PHP
php获取文件名后缀常用方法小结
Feb 24 PHP
windows下安装php的memcache模块的方法
Apr 07 PHP
PHP实现全角字符转为半角方法汇总
Jul 09 PHP
ajax+php控制所有后台函数调用
Jul 15 PHP
php实现的操作excel类详解
Jan 15 PHP
php获取linux命令结果的实例
Mar 13 PHP
PHPMailer ThinkPHP实现自动发送邮件功能
Jun 10 PHP
ThinkPHP3.2.3框架Memcache缓存使用方法实例总结
Apr 15 PHP
php读取XML的常见方法实例总结
Apr 25 #PHP
利用PHP实现一个简单的用户登记表示例
Apr 25 #PHP
PHP中的正则表达式实例详解
Apr 25 #PHP
PHP利用二叉堆实现TopK-算法的方法详解
Apr 24 #PHP
关于PHP定时发送服务的解决办法
Apr 23 #PHP
php读取和保存base64编码的图片内容
Apr 22 #PHP
PHP7多线程搭建教程
Apr 21 #PHP
You might like
如何对PHP程序中的常见漏洞进行攻击(下)
2006/10/09 PHP
php 获取一个月第一天与最后一天的代码
2010/05/16 PHP
wordpress自定义url参数实现路由功能的代码示例
2013/11/28 PHP
浅谈thinkphp5 instance 的简单实现
2017/07/30 PHP
thinkPHP5框架实现多数据库连接,跨数据连接查询操作示例
2019/05/29 PHP
js数据验证集合、js email验证、js url验证、js长度验证、js数字验证等简单封装
2010/05/15 Javascript
js 获取屏幕各种宽高的方法(浏览器兼容)
2013/05/15 Javascript
javascript日期格式化方法小结
2015/12/17 Javascript
Javascript中获取浏览器类型和操作系统版本等客户端信息常用代码
2016/06/28 Javascript
JS提示:Uncaught SyntaxError:Unexpected token ) 错误的解决方法
2016/08/19 Javascript
详解通过JSON数据使用VUE.JS
2017/05/26 Javascript
angular 用拦截器统一处理http请求和响应的方法
2017/06/08 Javascript
JavaScript反弹动画效果的实现代码
2017/07/13 Javascript
Java设计中的Builder模式的介绍
2018/03/22 Javascript
php中and 和 &amp;&amp;出坑指南
2018/07/13 Javascript
JQueryDOM之样式操作
2019/03/27 jQuery
vue + axios get下载文件功能
2019/09/25 Javascript
Vue实现手机计算器
2020/08/17 Javascript
[06:44]2018DOTA2亚洲邀请赛4.5 SOLO赛 MidOne vs Sumail
2018/04/06 DOTA
举例讲解Python中的Null模式与桥接模式编程
2016/02/02 Python
Windows下安装python MySQLdb遇到的问题及解决方法
2017/03/16 Python
Python内置模块turtle绘图详解
2017/12/09 Python
解决pip install的时候报错timed out的问题
2018/06/12 Python
Python生成器generator用法示例
2018/08/10 Python
tensorflow保持每次训练结果一致的简单实现
2020/02/17 Python
Python chardet库识别编码原理解析
2020/02/18 Python
解决python对齐错误的方法
2020/07/16 Python
美国非常受欢迎的Spa品牌:Bliss必列斯
2018/04/10 全球购物
Bibloo奥地利:购买女装、男装、童装、鞋和配件
2018/10/18 全球购物
销售工作人员的自我评价分享
2013/11/10 职场文书
坚定理想信念心得体会
2014/03/11 职场文书
英语教育专业自荐信
2014/05/29 职场文书
2015年事业单位工作总结
2015/04/27 职场文书
婚礼嘉宾致辞
2015/07/28 职场文书
优秀创业计划书分享
2019/07/19 职场文书
mysql如何查询连续记录
2022/05/11 MySQL