gpt4 book ai didi

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

转载 作者:qq735679552 更新时间:2022-09-28 22:32:09 25 4
gpt4 key购买 nike

CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界.

这篇CFSDN的博客文章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】 。

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

范例:

?
1
2
3
4
<?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'为十六进制值:

?
1
2
3
<?php
   $str = bin2hex( 'chengdu' );
   echo $str ;

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

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

?
1
2
3
4
<?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参数所表示的八进制数的十进制等值.

函数说明:

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

范例:

?
1
2
3
<?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 的字符串.

范例:

?
1
2
3
<?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".

范例:

?
1
2
3
<?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()只能处理无符号整数,负整数会以无符号来处理.

范例:

?
1
2
3
<?php
   echo dechex ( 10 ) . "\n" ;
   echo dechex ( 58 );

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

4.十六进制:

4.1.十六进制转二进制:

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

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

函数说明:

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

范例:

?
1
2
3
<?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类型.

范例:

?
1
2
3
4
5
6
7
<?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()的操作可能会导致大数值中的精度丢失.

范例:

?
1
2
3
4
5
6
<?php
   $hexadecimal = 'A37334' ;
   echo base_convert ( $hexadecimal , 16 , 2 );
   //print 101000110111001100110100
   echo base_convert ( $hexadecimal , 16 , a);
   //print 10711860

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

最后此篇关于PHP实现十进制、二进制、八进制和十六进制转换相关函数用法分析的文章就讲到这里了,如果你想了解更多关于PHP实现十进制、二进制、八进制和十六进制转换相关函数用法分析的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com