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

相关推荐

  • PHP8中的函数:fdiv()——灵活的除法运算。

    随着PHP8的发布,众多新特性和改进已经吸引了开发者的眼球。其中一个新的函数fdiv()就是让人印象深刻的一个。它是PHP8中新增的一个针对浮点除法运算的函数,可以提供更加灵活和精确的除法运算。在以往的PHP版本中...

    2023年5月21日
    02
  • 微信小程序中PHP实现百度地图。

    随着移动互联网的不断发展,越来越多的应用程序通过微信小程序的形式为用户提供服务。在这些应用程序中,百度地图是一种普遍存在的功能,用于帮助用户更好地了解周边环境和导航路线。本文将介绍如何在微信小程序...

    2023年6月3日
    04
  • PHP基于数组实现的堆栈和队列功能示例(附代码)

    堆栈和队列是数据结构的两种实现形式,是使用非常广泛的存储数据的容器。下面呢,就分别讲下这两种容器在PHP中的应用: 使用数组实现堆栈: 1、堆栈容器中,最后进栈的将会被最先出栈,即所谓的“先进后出”的数据...

    2018年3月2日
    0210
  • php如何使用PHP的PDO_ORACLE扩展。

    PHP是一种流行的动态编程语言,它可以通过各种扩展来拓展其功能。其中,PDO_ORACLE扩展是一种常用的扩展,它可以帮助PHP开发人员连接Oracle数据库并进行操作。本文将介绍如何使用PDO_ORACLE扩展。一、安装PDO_ORA...

    2023年6月3日
    00
  • PHP与数据库队列的集成。

    随着现代Web应用的发展,越来越多的需要将任务异步处理,以提高网站的性能和用户体验。其中一种常见的方式是使用队列系统,将需要处理的任务排队,然后由后台进程异步处理。而PHP和数据库都是Web开发中广泛使用的...

    2023年5月21日
    03
  • PHP中str_replace高级使用你知道吗?

    “str_replace高级使用你应该了解一下”在阅读PHP框架ThinkPHP源码的过程中有很多方法的冷门使用,也就是不常用的使用方法。这里咔咔先对str_replace这个方法进行解析,这个方法也就是替换字符串中的一些字符(区分...

    2022年6月25日 PHP自学教程
    0122
  • 从PHP7到PHP8:array_key_first()与array_key_last()的综合使用。

    PHP 8 是 PHP 社区推出的一项重要更新,其带来的新特性和优化大幅提高了 PHP 的性能和开发效率。其中,新增的 array_key_first() 和 array_key_last() 函数也成为了众多开发者的关注点。本文将从 PHP 7 开始介绍...

    2023年5月21日
    02
  • PHP入门指南:PHP和Flink。

    PHP是一种流行的开源服务器端脚本语言,建议初学者通过学习PHP入门指南,来了解PHP和Flink之间的关联。PHP是一种脚本语言,专门用于Web开发。它常用于动态的网页编程,但也可以在命令行方法进行编写。此外,开发...

    2023年5月23日
    05

联系我们

QQ:951076433

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