PHP进制的转换问题

先学习几个单词:

dec: 十进制

bin:进制

oct:八进制

hex:十六进制

  • 十进制转二进制decbin(),除2取余倒着写

$v1 = decbin(123); //注意:参数必须是10进制数字,转换后的结果必然是二进制字符串。

PHP进制的转换问题

我们也可以通过手工的方式来完成10进制转2进制的完整过程。

基本做法是:将10进制数字除以2,并取得余数,如果除得的商不为0,则继续除以2,并继续去的余数,直到商为0。然后将所有取得的余数,按“倒序写出”,就是对应的2进制数字:

PHP进制的转换问题

  • 十进制转八进制decoct(),除8取余倒着写

使用php系统函数:

$r1 =  decoct(十进制数字);     //结果是一个8进制数字字符串。

PHP进制的转换问题

我们也可以通过手工的方式来完成10进制转8进制的完整过程。

基本做法是:将10进制数字除以8,并取得余数,如果除得的商不为0,则继续除以8,并继续去的余数,直到商为0。然后将所有取得的余数,按“倒序写出”,就是对应的8进制数字:

PHP进制的转换问题

  • 十进制转十六进制dechex(),除16取余倒着写

16进制的数字包括如下(从0开始):

0     1     2     3     4     5     6     7     8     9     A     B     C     D     E     F

对应10进制其实是:

0     1     2     3     4     5     6     7     8     9     10    11    12    13    14    15

系统函是:dechex(十进制数字), 结果是16进制数字字符串。

PHP进制的转换问题

手工运算:

基本做法是:将10进制数字除以16,并取得余数,如果除得的商不为0,则继续除以16,并继续去的余数,直到商为0。然后将所有取得的余数,按“倒序写出”,就是对应的16进制数字:

PHP进制的转换问题

  • 二进制转十进制bindec(),每位数值乘以2的权值然后相加

先理解一个“权值”概念:

就是某位数字上的该数字所代表的数的大小。比如:

10进制数字1234,其代表:1*10 3+ 2*102 + 3*101  + 4*100  =  1000+ 200 + 30 + 4;

这里,10 3, 102 ,101 ,等等,就称为权值。

二进制转10进制,就是将每位数值乘以对应位上的权值,然后相加得到的结果。

用系统函数是:

$v1  =  bindec(“二进制数字字符串”) ;//得到的结果是10进制数字

结果:

PHP进制的转换问题

手工转换:

二进制数字的权值,从右到左,分别是:

20, 21, 22, 23, 24, 25,.....

即分别是(10进制大小):

1, 2,  4,  8,  16,32

手工计算:

1010110

=1*26 + 0*XX  + 1*24 + 0*XX  + 1*22 + 1*21 + 0 //说明,其中XX表示无所谓的数字值

=64 + 0 + 16 + 0 + 4 + 2 + 0

=86

  • 八进制转十进制octdec() ,每位数值乘以8的权值然后相加

用系统函数是:

$v1  =  octdec(“8进制数字字符串”) ;//得到的结果是10进制数字

PHP进制的转换问题

结果:

手工算法统2进制转换为10进制,略。

  • 十六进制转十进制hexdec() ,每位数值乘以16的权值然后相加

用系统函数是:

$v1  =  hexdec(“16进制数字字符串”) ;//得到的结果是10进制数字

结果:

PHP进制的转换问题

  • 注意:十进制转为其他进制结果是字符串,其他进制转为十进制要求给定数据是字符串形式

思考:

$v1 = bindec(123);//理解过程:bindec(“123”) =>bindec(“1”)=>1

$v2 = bindec(0123);//理解:0123是8进制数字,其10进制值为:83,再当作二进制字符串就是“83”,结果就只能是0

$v3 = bindec(“0123”);//理解:因为直接就是字符串了,就当二进制字符串用,结果是1

$v4 = octdec(0123);      //理解:0123是8进制数字,其10进制值为:83,再当作8进制字符串就是“83”,但8进制中没有“8”这个数字,就只识别出一个“3”这个数字

以下代码测试:

PHP进制的转换问题

本文来自投稿,不代表重蔚自留地立场,如若转载,请注明出处https://www.cwhello.com/4700.html

如有侵犯您的合法权益请发邮件951076433@qq.com联系删除

(0)
重蔚重蔚管理团队
上一篇 2018年3月14日 12:44
下一篇 2018年3月14日 16:19

相关推荐

  • PHP中的MD5加密技术指南。

    PHP 是一门非常强大的编程语言,广泛应用于 Web 开发领域。随着 Web 网站日益壮大,网站安全问题成为 Web 开发中不可忽视的因素。其中,密码安全是最为重要的一环。为了保护用户密码,Web 开发人员常常使用加密技术…

    2023年5月23日
    03
  • 如何用PHP生成微信小程序图。

    如何用PHP生成微信小程序分享图随着微信小程序的普及,越来越多的企业和个人开始将微信小程序作为自己的营销工具。在微信小程序的推广中,分享图是一个非常重要的环节。分享图的好坏,直接影响了用户对小程序的第一…

    2023年6月3日
    06
  • PHP入门指南:共享内存。

    在Web开发领域中,PHP是一种非常流行的编程语言。它被广泛应用于动态网站的开发,也用于开发各种类型的框架和应用程序。在这个快速发展的行业中,学习PHP编程语言可以为您打开许多机会。在本篇文章中,我们将分享共…

    2023年5月22日
    02
  • 使用PHP开发直播功能的详细教程。

    随着网络技术的不断发展,直播功能正在变得越来越流行。在这样一个背景下,越来越多的开发者正在使用PHP语言开发直播功能,以满足市场需求。本篇文章将针对如何使用PHP语言开发直播功能,提供一个详细的教程,帮助…

    2023年5月30日
    045
  • 详解PHP中的数组分页实现(非数据库)

    在日常开发的业务环境中,我们一般都会使用 MySQL 语句来实现分页的功能。但是,往往也有些数据并不多,或者只是获取 PHP 中定义的一些数组数据时需要分页的功能。这时,我们其实不需要每次都去查询数据库,可以在…

    2023年3月29日
    01
  • 了解PHP中的Trait 特性及作用

    自 PHP 5.4.0 起,PHP 实现了代码复用的一个方法,称为 traits。Traits 是一种为类似 PHP 的单继承语言而准备的代码复用机制。Trait 为了减少单继承语言的限制,使开发人员能够自由地在不同层次结构内独立的类中复…

    2022年6月16日
    0133
  • 21个php常用方法汇总

    php常用方法汇总1. PHP可阅读随机字符串 此代码将创建一个可阅读的字符串,使其更接近词典中的单词,实用且具有密码验证功能。 /************** *@length - length of random string (must be a multiple of 2) ***…

    2022年6月18日
    0132
  • PHP和Redis中的LUA脚本使用方法

    PHP和Redis中的LUA脚本使用方法LUA 是一种轻量级的脚本语言,旨在提供高效的嵌入式扩展功能。Redis 是一种开源的 NoSQL 数据库,提供高效的键值存储和缓存功能。在 Redis 中使用 LUA 脚本可以大大提高数据处理效率…

    2023年5月19日
    011

联系我们

QQ:951076433

在线咨询:点击这里给我发消息邮件:951076433@qq.com工作时间:周一至周五,9:30-18:30,节假日休息