开发者学堂课程【PHP 基础入门课程(上) :进制转换】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/709/detail/12591
进制转换
内容简介:
一、目标
二、概念
三、二进制转八进制或者十六进制
四、小结
一、目标
了解进制的原理,知道 PHP 中有进制转换的快捷函数。
二、概念
进制转换:
是指根据不同的进制要求,将原始数值(通常指整数)转换成目标进制。
•二进制与十进制互转
•二进制与八进制互转
•二进制与十六进制互转
•八进制与十进制互转
•八进制与十六进制互转
•十进制与十六进制互转
首先知道原始数据及其进制
从左往右依次编号:0开始
转换方案
1. 按位取出当前值
2. 找到当前对应的编号:如2
3、找到原始进制:如8进制
4、计算:值*进制^编号(幂)
5、所有位数求出后求和
求和3+16+64=83
三、二进制转八进制或者十六进制
•二进制转八进制:从右边开始依次取三位转换成十进制,将所有结果合并即可(三位二进制最大7二进制转八进制或者十六进制工
•二进制转八进制:从右边开始依次取三位转换成十进制,将所有结果合并即可(三位二进制最大7:111=>7)11111111=>11,111,111=>3,7,7=>377
•二进制转十六进制:从右边开始依次取四位转换成十进制,将所有结果合并即可(四位二进制最大15:111=>15==F)11111111=>1111,1111=>F,F=>FF
•八进制转二进制:每位数转换成三位的二进制,将所有结果合并即可
123=>1,2,3=>001,010,011=>00101011=> 101011(左侧的0可以忽略)
·十六进制转二进制:每位数转换成四位的二进制,将所有结果合并即可
123=>1,2,3=>0001,0010,0011 => 000100100011 => 100100011111=>7)11111111=>11,111,111=>3,7,7=>377
•二进制转十六进制:从右边开始依次取四位转换成十进制,将所有结果合并即可(四位二进制最大15:111=>15==F)11111111=>1111,1111=>F,F=>FF
•八进制转二进制:每位数转换成三位的二进制,将所有结果合并即可
123=>1,2,3=>001,010,011=>00101011=> 101011(左侧的0可以忽略)
•十六进制转二进制:每位数转换成四位的二进制,将所有结果合并即可
123=>1,2,3=>0001,0010,0011 => 000100100011 => 100100011
简化
在 PHP 中,已经考虑到业务的需求,所以 PHP 提供了一系列函数来实现各类进制转换,以十进制为基准
•bindecI 二进制转十进制
•decbin:十进制转二进制
•decoct:十进制转八进制
•octdec:八进制转十进制
•dechex:十进制转十六进制
•hexdec:十六进制转十进制
#示例:十六进制转十进制
hexdec(' 123'); #结果:291
四、小结
1、进制转换原理可以以10进制为基准互转
2、PHP 提供了一套以十进制为基准的转换函数,利用十进制与其他进制组合成单词即可实现函数转换
•八进制:oct
•十进制:dec
•十六进制:hex
•二进制:bin