这里有新鲜出炉的 PHP 教程,程序狗速度看过来!
PHP(外文名: Hypertext Preprocessor,中文名:"超文本预处理器")是一种通用开源脚本语言。语法吸收了 C 语言、Java 和 Perl 的特点,入门门槛较低,易于学习,使用广泛,主要适用于 web 开发领域。PHP 的文件后缀名为 php。
这篇文章主要介绍了 PHP 实现十进制、二进制、八进制和十六进制转换相关函数用法, 结合具体实例形式较为详细的分析了 php 各种常见的进制转换函数功能、参数、使用方法与相关注意事项, 需要的朋友可以参考下
本文实例讲述了 PHP 实现十进制、二进制、八进制和十六进制转换相关函数用法。分享给大家供大家参考,具体如下:
1. 二进制:
1.1. 二进制转十进制:
函数:
- bindec(string $binary_string)
@param $binary_string 参数表示所要转换的二进制字符串。
@return 返回与 $binary_string 参数所表示的二进制数的十进制数等价值。
函数说明:
将一个二进制数转换成 Integer 类型或者出于大小的需要,转换为 float 类型。
- bindec()
将所有的 $binary_string 值解释为无符号整数。这是因为 bindec() 函数将其最高有效位视为数量级而非符号位。【即最高位 0 或 1 并不被 bindec() 表示为 + 或 - 而是按值来表示 1 就是 1,0 就是 0】
- bindec()
注意:参数必须为字符串,使用其他的数据类型会导致不可预知的结果。
范例:
- <?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 返回转换字符串的十六进制值。
函数说明:
函数把 ASCII 字符的字符串转换为十六进制值。字符串可通过使用 pack() 函数再转换回去。
- bin2hex()
函数转换使用字节方式,高四位字优先。
- bin2hex()
范例:
(1)
转换'chengdu'为十六进制值:
- bin2hex()
- <?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 参数所表示的八进制数的十进制等值。
函数说明:
可以处理 Integer 大数字,但在这种情况下它会返回 float 类型。
- octdec()
范例:
- <?php
- echo octdec( '010' ) . "\n";
- echo octdec( decoct( 45 ) );
以上程序语句会输出:8, 45
3. 十进制:
3.1. 十进制转二进制:
函数:
- decbin(int $number)
@param $number 所要转换的十进制数字,所能转换的最大数值为十进制的 4294967295,其 decbin 结果为 32 个 1 的字符串。
@return 返回十进制数字转换后的二进制字符串。
函数说明:
函数所能转换的最大十进制数值为 4294967295,其结果为 32 个 1 的字符串。
- decbin()
范例:
- <?php
- echo decbin ( 10 ) . "\n";
- echo decbin ( 50 );
以上程序语句会输出:1010, 110010
3.2. 十进制转八进制:
函数:
- decoct(int $number)
@param $number 所要转换的十进制数字,所能转换的最大数值是十进制的 4294967295,其 decoct() 结果为"37777777777"。
@return 返回一个包含有给定 $number 参数的八进制表示的字符串。
函数说明:
函数所能转换的最大十进制数数值为 4294967295,其结果为 "37777777777"。
- decoct()
范例:
- <?php
- echo decoct ( 10 ) . "\n" ;
- echo decoct ( 50 );
以上程序语句会依次输出:12, 62
3.3. 十进制转十六进制:
函数:
- dechex(int $number)
@param $number 将要转换的十进制数字。
@return 返回一个包含给定 $number 参数的十六进制表示的字符串。
函数说明:
函数所能转换的十进制的最大数值是:PHP_INT_MAX*2 +/- 1,在 32 位系统上是十进制的 4294967295,其
- dechex()
的结果为 ffffffff。
- dechex()
注意: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 程序设计有所帮助。
来源: http://www.phperz.com/article/17/0808/340107.html