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】

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

范例:

<?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’为十六进制值:

<?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参数所表示的八进制数的十进制等值。

函数说明:

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

范例:

<?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 的字符串。

范例:

<?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"。

范例:

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

范例:

<?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



  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: Python中可以使用内置函数bin()、oct()、hex()将十进制数转换为二进制八进制、十六进制数。 例如,将十进制数10转换为二进制数: ```python bin(10) ``` 输出结果为: ``` 'b101' ``` 其中,'b'表示二进制数的前缀。 将十进制数10转换为八进制数: ```python oct(10) ``` 输出结果为: ``` 'o12' ``` 其中,'o'表示八进制数的前缀。 将十进制数10转换为十六进制数: ```python hex(10) ``` 输出结果为: ``` 'xa' ``` 其中,'x'表示十六进制数的前缀。 ### 回答2: Python 是一种功能强大、灵活多样的编程语言,而对数字进行数制转换是 Python 中常见的操作。本文将介绍如何使用 Python 将十进制数字转换为二进制八进制和十六进制数字。 1. 十进制二进制十进制数字转换为二进制数字,可以使用 Python 内置函数 bin()。bin() 函数接受十进制数字作为参数,返回一个二进制字符串。 例如,将十进制数 10 转换为二进制数: ```python >>> bin(10) '0b1010' ``` 可以看到,bin() 函数返回的结果是一个以 "0b" 开头的二进制字符串。如果不想要这个前缀,可以使用切片操作去掉: ```python >>> bin(10)[2:] '1010' ``` 2. 十进制八进制十进制数字转换为八进制数字,可以使用 Python 内置函数 oct()。oct() 函数接受十进制数字作为参数,返回一个八进制字符串。 例如,将十进制数 10 转换为八进制数: ```python >>> oct(10) '0o12' ``` 返回的结果也是一个以 "0o" 开头的八进制字符串。同样,如果不想要前缀可以使用切片操作去掉。 ```python >>> oct(10)[2:] '12' ``` 3. 十进制转十六进制 将十进制数字转换为十六进制数字,可以使用 Python 内置函数 hex()。hex() 函数接受十进制数字作为参数,返回一个十六进制字符串。 例如,将十进制数 10 转换为十六进制数: ```python >>> hex(10) '0xa' ``` 返回的结果是一个以 "0x"开头的十六进制字符串。同样,如果不想要前缀可以使用切片操作去掉。 ```python >>> hex(10)[2:] 'a' ``` 总结 Python 提供了很多内置函数来进行数制的转换操作,其中 bin()、oct() 和 hex() 函数可以用于将十进制数字转换成二进制八进制和十六进制数字。欲去掉转换后的前缀,可以使用切片操作去掉。这些函数在实际编程过程中非常有用,方便快捷。 ### 回答3: Python作为一种高级语言,其提供的内置函数和库使得数值进制之间的转换非常方便。在Python中,我们可以使用bin()、oct()和hex()这三个内置函数来进行十进制二进制八进制和十六进制之间的转换。 1. 十进制二进制: 使用bin()函数可以将十进制数转换为二进制数,函数的返回值是一个字符串类型的二进制数。 具体使用方法如下: ``` x = 10 # 将十进制数10转为二进制数 bin_x = bin(x) # 输出结果为:0b1010 print(bin_x) ``` 2. 十进制八进制: 使用oct()函数可以将十进制数转换为八进制数,函数的返回值是一个字符串类型的八进制数。 具体使用方法如下: ``` x = 10 # 将十进制数10转为八进制数 oct_x = oct(x) # 输出结果为:0o12 print(oct_x) ``` 3. 十进制转十六进制: 使用hex()函数可以将十进制数转换为十六进制数,函数的返回值是一个字符串类型的十六进制数。 具体使用方法如下: ``` x = 10 # 将十进制数10转为十六进制数 hex_x = hex(x) # 输出结果为:0xa print(hex_x) ``` 总之,Python中的内置函数和库极大地方便了数值进制之间的转换,让我们的代码编写更加高效和便捷。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

南淮_

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值