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 相关文章推荐
mysql5写入和读出乱码解决
Nov 25 PHP
收集的php编写大型网站问题集
Mar 06 PHP
PHP如何编写易读的代码
Jul 10 PHP
PHP下常用正则表达式整理
Oct 26 PHP
Ajax+PHP快速上手及简单应用说明
Jul 24 PHP
php ckeditor上传图片文件名乱码解决方法
Nov 15 PHP
PHP实现获取图片颜色值的方法
Jul 11 PHP
PHP 前加at符合@的作用解析
Jul 31 PHP
thinkPHP5.0框架API优化后的友好性分析
Mar 17 PHP
Kindeditor编辑器添加图片上传水印功能(php代码)
Aug 03 PHP
[原创]php token使用与验证示例【测试可用】
Aug 30 PHP
PHP容器类的两种实现方式示例
Jul 24 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
同台服务器使用缓存APC效率高于Memcached的演示代码
2010/02/16 PHP
PHP生成随机密码类分享
2014/06/25 PHP
php网站被挂木马后的修复方法总结
2014/11/06 PHP
PHP命名空间namespace用法实例分析
2016/09/27 PHP
老生常谈PHP数组函数array_merge(必看篇)
2017/05/25 PHP
PHP实现UTF8二进制及明文字符串的转化功能示例
2017/11/20 PHP
随机显示经典句子或诗歌的javascript脚本
2007/08/04 Javascript
javascript之通用简单的table选项卡实现(二)
2010/05/09 Javascript
JavaScript接口实现代码 (Interfaces In JavaScript)
2010/06/11 Javascript
javascript判断非数字的简单例子
2013/07/18 Javascript
Ext修改GridPanel数据和字体颜色、css属性等
2014/06/13 Javascript
Jquery常用的方法汇总
2015/09/01 Javascript
详解Bootstrap四种图片样式
2016/01/04 Javascript
JQuery解析XML数据的几个简单实例
2016/05/18 Javascript
Angular2 多级注入器详解及实例
2016/10/30 Javascript
基于JSON数据格式详解
2017/08/31 Javascript
基于复选框demo(分享)
2017/09/27 Javascript
jQuery实现页码跳转式动态数据分页
2017/12/31 jQuery
Vue自定义toast组件的实例代码
2018/08/15 Javascript
EasyUI 数据表格datagrid列自适应内容宽度的实现
2019/07/18 Javascript
关于ligerui子页面关闭后,父页面刷新,重新加载的方法
2019/09/27 Javascript
[01:37]TI4西雅图DOTA2前线报道 VG拿下首胜教练357给出获胜秘诀
2014/07/10 DOTA
python协程用法实例分析
2015/06/04 Python
python实现linux下抓包并存库功能
2018/07/18 Python
Matplotlib自定义坐标轴刻度的实现示例
2020/06/18 Python
CSS3实现多样的边框效果
2018/05/04 HTML / CSS
美国亚马逊旗下男装网站:East Dane(支持中文)
2019/09/25 全球购物
博柏利美国官方网站:Burberry美国
2020/11/19 全球购物
交通事故检查书范文
2014/01/30 职场文书
企业员工辞职信范文
2015/05/12 职场文书
学生病假条范文
2015/08/17 职场文书
如何写好闭幕词
2019/04/02 职场文书
关于保护环境的建议书
2019/06/24 职场文书
祝福语集锦:送给毕业同学祝福语
2019/11/21 职场文书
MySQL系列之五 视图、存储函数、存储过程、触发器
2021/07/02 MySQL
java objectUtils 使用可能会出现的问题
2022/02/28 Java/Android