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

來源:互聯網
上載者:User
這篇文章主要介紹了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('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

以上就是本文的全部內容,希望對大家的學習有所協助。


聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.