热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

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

这篇文章主要介绍了PHP实现十进制、二进制、八进制和十六进制转换相关函数用法,结合具体实例形式较为详细的分析了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】

注意:参数必须为字符串,使用其他的数据类型会导致不可预知的结果。

范例:

<&#63;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'为十六进制值:

<&#63;php
  $str = bin2hex('chengdu');
  echo $str;

以上程序语句会输出:6368656e676475

(2)把一个字符串值从二进制转换为十六进制,再转换回去:

<&#63;php
  $str = 'chengdu';
  echo bin2hex($str) . "
"; echo pack("H*", bin2hex($str)) . "
";

以上程序语句依次输出:6368656e676475, chengdu

2.八进制:

2.1.八进制转十进制:

函数:octdec(string $octal_string)

@param  $octal_string 参数表示将要转换的八进制字符串。
@return   返回$octal_string参数所表示的八进制数的十进制等值。

函数说明:

octdec()可以处理Integer大数字,但在这种情况下它会返回float类型。

范例:

<&#63;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 的字符串。

范例:

<&#63;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"。

范例:

<&#63;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()只能处理无符号整数,负整数会以无符号来处理。

范例:

<&#63;php
  echo dechex ( 10 ) . "\n" ;
  echo dechex ( 58 );

以上程序语句会依次输出:a, 3a

4.十六进制:

4.1.十六进制转二进制:

函数:hex2bin(string $data);   转换十六进制字符串为二进制字符串

@param  $data  使用十六进制表示的数据。
@return    返回给定数据的二进制字符串或者在失败时返回FALSE。

函数说明:

如果输入的十六进制字符串是奇数长度或者是无效的十六进制字符串,则会抛出一个E_WARNING级别的错误。

范例:

<&#63;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类型。

范例:

<&#63;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()的操作可能会导致大数值中的精度丢失。

范例:

<&#63;php
  $hexadecimal = 'A37334' ;
  echo base_convert ( $hexadecimal , 16 , 2 );
  //print 101000110111001100110100
  echo base_convert ( $hexadecimal , 16 , a);
  //print 10711860

PS:这里再为大家推荐几款计算与转换工具供大家参考使用:

在线任意进制转换工具:
http://tools.jb51.net/transcoding/hexconvert

科学计算器在线使用_高级计算器在线计算:
http://tools.jb51.net/jisuanqi/jsqkexue

在线计算器_标准计算器:
http://tools.jb51.net/jisuanqi/jsq

更多关于PHP相关内容感兴趣的读者可查看本站专题:《PHP数学运算技巧总结》、《PHP数组(Array)操作技巧大全》、《PHP数据结构与算法教程》、《php程序设计算法总结》、《PHP运算与运算符用法总结》、《php字符串(string)用法总结》及《php常见数据库操作技巧汇总》

希望本文所述对大家PHP程序设计有所帮助。


推荐阅读
  • Android中高级面试必知必会,积累总结
    本文介绍了Android中高级面试的必知必会内容,并总结了相关经验。文章指出,如今的Android市场对开发人员的要求更高,需要更专业的人才。同时,文章还给出了针对Android岗位的职责和要求,并提供了简历突出的建议。 ... [详细]
  • 本文详细解析了JavaScript中相称性推断的知识点,包括严厉相称和宽松相称的区别,以及范例转换的规则。针对不同类型的范例值,如差别范例值、统一类的原始范例值和统一类的复合范例值,都给出了具体的比较方法。对于宽松相称的情况,也解释了原始范例值和对象之间的比较规则。通过本文的学习,读者可以更好地理解JavaScript中相称性推断的概念和应用。 ... [详细]
  • 本文介绍了闭包的定义和运转机制,重点解释了闭包如何能够接触外部函数的作用域中的变量。通过词法作用域的查找规则,闭包可以访问外部函数的作用域。同时还提到了闭包的作用和影响。 ... [详细]
  • 本文介绍了lua语言中闭包的特性及其在模式匹配、日期处理、编译和模块化等方面的应用。lua中的闭包是严格遵循词法定界的第一类值,函数可以作为变量自由传递,也可以作为参数传递给其他函数。这些特性使得lua语言具有极大的灵活性,为程序开发带来了便利。 ... [详细]
  • Linux服务器密码过期策略、登录次数限制、私钥登录等配置方法
    本文介绍了在Linux服务器上进行密码过期策略、登录次数限制、私钥登录等配置的方法。通过修改配置文件中的参数,可以设置密码的有效期、最小间隔时间、最小长度,并在密码过期前进行提示。同时还介绍了如何进行公钥登录和修改默认账户用户名的操作。详细步骤和注意事项可参考本文内容。 ... [详细]
  • 学习SLAM的女生,很酷
    本文介绍了学习SLAM的女生的故事,她们选择SLAM作为研究方向,面临各种学习挑战,但坚持不懈,最终获得成功。文章鼓励未来想走科研道路的女生勇敢追求自己的梦想,同时提到了一位正在英国攻读硕士学位的女生与SLAM结缘的经历。 ... [详细]
  • 生成式对抗网络模型综述摘要生成式对抗网络模型(GAN)是基于深度学习的一种强大的生成模型,可以应用于计算机视觉、自然语言处理、半监督学习等重要领域。生成式对抗网络 ... [详细]
  • 在Android开发中,使用Picasso库可以实现对网络图片的等比例缩放。本文介绍了使用Picasso库进行图片缩放的方法,并提供了具体的代码实现。通过获取图片的宽高,计算目标宽度和高度,并创建新图实现等比例缩放。 ... [详细]
  • 云原生边缘计算之KubeEdge简介及功能特点
    本文介绍了云原生边缘计算中的KubeEdge系统,该系统是一个开源系统,用于将容器化应用程序编排功能扩展到Edge的主机。它基于Kubernetes构建,并为网络应用程序提供基础架构支持。同时,KubeEdge具有离线模式、基于Kubernetes的节点、群集、应用程序和设备管理、资源优化等特点。此外,KubeEdge还支持跨平台工作,在私有、公共和混合云中都可以运行。同时,KubeEdge还提供数据管理和数据分析管道引擎的支持。最后,本文还介绍了KubeEdge系统生成证书的方法。 ... [详细]
  • 近年来,大数据成为互联网世界的新宠儿,被列入阿里巴巴、谷歌等公司的战略规划中,也在政府报告中频繁提及。据《大数据人才报告》显示,目前全国大数据人才仅46万,未来3-5年将出现高达150万的人才缺口。根据领英报告,数据剖析人才供应指数最低,且跳槽速度最快。中国商业结合会数据剖析专业委员会统计显示,未来中国基础性数据剖析人才缺口将高达1400万。目前BAT企业中,60%以上的招聘职位都是针对大数据人才的。 ... [详细]
  • CSS3选择器的使用方法详解,提高Web开发效率和精准度
    本文详细介绍了CSS3新增的选择器方法,包括属性选择器的使用。通过CSS3选择器,可以提高Web开发的效率和精准度,使得查找元素更加方便和快捷。同时,本文还对属性选择器的各种用法进行了详细解释,并给出了相应的代码示例。通过学习本文,读者可以更好地掌握CSS3选择器的使用方法,提升自己的Web开发能力。 ... [详细]
  • 本文介绍了Java工具类库Hutool,该工具包封装了对文件、流、加密解密、转码、正则、线程、XML等JDK方法的封装,并提供了各种Util工具类。同时,还介绍了Hutool的组件,包括动态代理、布隆过滤、缓存、定时任务等功能。该工具包可以简化Java代码,提高开发效率。 ... [详细]
  • 本文介绍了C#中生成随机数的三种方法,并分析了其中存在的问题。首先介绍了使用Random类生成随机数的默认方法,但在高并发情况下可能会出现重复的情况。接着通过循环生成了一系列随机数,进一步突显了这个问题。文章指出,随机数生成在任何编程语言中都是必备的功能,但Random类生成的随机数并不可靠。最后,提出了需要寻找其他可靠的随机数生成方法的建议。 ... [详细]
  • qt学习(六)数据库注册用户的实现方法
    本文介绍了在qt学习中实现数据库注册用户的方法,包括登录按钮按下后出现注册页面、账号可用性判断、密码格式判断、邮箱格式判断等步骤。具体实现过程包括UI设计、数据库的创建和各个模块调用数据内容。 ... [详细]
  • “你永远都不知道明天和‘公司的意外’哪个先来。”疫情期间,这是我们最战战兢兢的心情。但是显然,有些人体会不了。这份行业数据,让笔者“柠檬” ... [详细]
author-avatar
ZHANGQI0001234
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有