首頁  >  文章  >  後端開發  >  PHP實作十進制、二進制、八進制和十六進制轉換相關函數的方法

PHP實作十進制、二進制、八進制和十六進制轉換相關函數的方法

墨辰丷
墨辰丷原創
2018-05-23 15:00:043116瀏覽

這篇文章主要介紹了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】

注意:參數必須為字串,使用其他的資料類型會導致不可預測的結果。

範例:

<?php
  echo bindec(&#39;10010&#39;) . "\n";
  echo bindec(&#39;00110&#39;) . "\n";
  echo bindec(&#39;1111&#39;) . "\n";

以上程式語句會依序輸出:18,6,15

1.2.二進位轉十六進位

函數:bin2hex(string $str)

@param  $str 將要轉換的ASCII字符的字串。
@return  傳回轉換字串的十六進位值。

函數說明:

bin2hex() 函數把 ASCII 字元的字串轉換為十六進位值。字串可透過使用 pack() 函數再轉換回去。
bin2hex() 函數轉換使用位元組方式,高四位元組優先。

範例:

(1)bin2hex()轉換'chengdu'為十六進位值:

<?php
  $str = bin2hex(&#39;chengdu&#39;);
  echo $str;

#以上程式語句會輸出:6368656e676475

(2)把一個字串值從二進位轉換為十六進位,再轉換回去:

#
<?php
  $str = &#39;chengdu&#39;;
  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( &#39;010&#39; ) . "\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,其結果為 "377777777777"。

範例:

<?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 = &#39;A37334&#39; ;
  echo base_convert ( $hexadecimal , 16 , 2 );
  //print 101000110111001100110100
  echo base_convert ( $hexadecimal , 16 , a);
  //print 10711860

以上就是本文的全部内容,希望对大家的学习有所帮助。


相关推荐:

php简单实现数组分页的方法_php技巧

php使用ffmpeg获取视频信息并截图的实现方法_php技巧

thinkphp项目部署到Linux服务器上报错“模板不存在”如何解决_php技巧

以上是PHP實作十進制、二進制、八進制和十六進制轉換相關函數的方法的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn