PHP實(shí)現(xiàn)十進(jìn)制、二進(jìn)制、八進(jìn)制和十六進(jìn)制轉(zhuǎn)換相關(guān)函數(shù)用法分析
本文實(shí)例講述了PHP實(shí)現(xiàn)十進(jìn)制、二進(jìn)制、八進(jìn)制和十六進(jìn)制轉(zhuǎn)換相關(guān)函數(shù)用法。分享給大家供大家參考,具體如下:
1.二進(jìn)制:
1.1.二進(jìn)制轉(zhuǎn)十進(jìn)制:
函數(shù):bindec(string $binary_string)
@param $binary_string 參數(shù)表示所要轉(zhuǎn)換的二進(jìn)制字符串。
@return 返回與$binary_string參數(shù)所表示的二進(jìn)制數(shù)的十進(jìn)制數(shù)等價(jià)值。
函數(shù)說明:
bindec()
將一個(gè)二進(jìn)制數(shù)轉(zhuǎn)換成Integer類型或者出于大小的需要,轉(zhuǎn)換為float類型。
bindec()
將所有的$binary_string值解釋為無符號(hào)整數(shù)。這是因?yàn)閎indec()函數(shù)將其最高有效位視為數(shù)量級(jí)而非符號(hào)位?!炯醋罡呶?或1并不被bindec()表示為+或-而是按值來表示1就是1,0就是0】
注意:參數(shù)必須為字符串,使用其他的數(shù)據(jù)類型會(huì)導(dǎo)致不可預(yù)知的結(jié)果。
范例:
<?php echo bindec('10010') . "\n"; echo bindec('00110') . "\n"; echo bindec('1111') . "\n";
以上程序語句會(huì)依次輸出:18,6,15
1.2.二進(jìn)制轉(zhuǎn)十六進(jìn)制
函數(shù):bin2hex(string $str)
@param $str 將要轉(zhuǎn)換的ASCII字符的字符串。
@return 返回轉(zhuǎn)換字符串的十六進(jìn)制值。
函數(shù)說明:
bin2hex()
函數(shù)把 ASCII 字符的字符串轉(zhuǎn)換為十六進(jìn)制值。字符串可通過使用 pack() 函數(shù)再轉(zhuǎn)換回去。
bin2hex()
函數(shù)轉(zhuǎn)換使用字節(jié)方式,高四位字優(yōu)先。
范例:
(1)bin2hex()
轉(zhuǎn)換‘chengdu'為十六進(jìn)制值:
<?php $str = bin2hex('chengdu'); echo $str;
以上程序語句會(huì)輸出:6368656e676475
(2)把一個(gè)字符串值從二進(jìn)制轉(zhuǎn)換為十六進(jìn)制,再轉(zhuǎn)換回去:
<?php $str = 'chengdu'; echo bin2hex($str) . "<br/>"; echo pack("H*", bin2hex($str)) . "<br/>";
以上程序語句依次輸出:6368656e676475, chengdu
2.八進(jìn)制:
2.1.八進(jìn)制轉(zhuǎn)十進(jìn)制:
函數(shù):octdec(string $octal_string)
@param $octal_string 參數(shù)表示將要轉(zhuǎn)換的八進(jìn)制字符串。
@return 返回$octal_string參數(shù)所表示的八進(jìn)制數(shù)的十進(jìn)制等值。
函數(shù)說明:
octdec()
可以處理Integer大數(shù)字,但在這種情況下它會(huì)返回float類型。
范例:
<?php echo octdec( '010' ) . "\n"; echo octdec( decoct( 45 ) );
以上程序語句會(huì)輸出:8, 45
3.十進(jìn)制:
3.1.十進(jìn)制轉(zhuǎn)二進(jìn)制:
函數(shù):decbin(int $number)
@param $number 所要轉(zhuǎn)換的十進(jìn)制數(shù)字,所能轉(zhuǎn)換的最大數(shù)值為十進(jìn)制的4294967295,其decbin結(jié)果為 32 個(gè) 1 的字符串。
@return 返回十進(jìn)制數(shù)字轉(zhuǎn)換后的二進(jìn)制字符串。
函數(shù)說明:
decbin()
函數(shù)所能轉(zhuǎn)換的最大十進(jìn)制數(shù)值為4294967295,其結(jié)果為 32 個(gè) 1 的字符串。
范例:
<?php echo decbin ( 10 ) . "\n"; echo decbin ( 50 );
以上程序語句會(huì)輸出:1010, 110010
3.2.十進(jìn)制轉(zhuǎn)八進(jìn)制:
函數(shù):decoct(int $number)
@param $number 所要轉(zhuǎn)換的十進(jìn)制數(shù)字,所能轉(zhuǎn)換的最大數(shù)值是十進(jìn)制的4294967295,其decoct()結(jié)果為 "37777777777"。
@return 返回一個(gè)包含有給定$number參數(shù)的八進(jìn)制表示的字符串。
函數(shù)說明:
decoct()
函數(shù)所能轉(zhuǎn)換的最大十進(jìn)制數(shù)數(shù)值為4294967295,其結(jié)果為 "37777777777"。
范例:
<?php echo decoct ( 10 ) . "\n" ; echo decoct ( 50 );
以上程序語句會(huì)依次輸出:12, 62
3.3.十進(jìn)制轉(zhuǎn)十六進(jìn)制:
函數(shù):dechex(int $number)
@param $number 將要轉(zhuǎn)換的十進(jìn)制數(shù)字。
@return 返回一個(gè)包含給定$number參數(shù)的十六進(jìn)制表示的字符串。
函數(shù)說明:
dechex()
函數(shù)所能轉(zhuǎn)換的十進(jìn)制的最大數(shù)值是:PHP_INT_MAX*2 +/- 1,在32位系統(tǒng)上是十進(jìn)制的4294967295,其dechex()
的結(jié)果為ffffffff。
注意:PHP的Integer類型是有符號(hào)的,但是dechex()只能處理無符號(hào)整數(shù),負(fù)整數(shù)會(huì)以無符號(hào)來處理。
范例:
<?php echo dechex ( 10 ) . "\n" ; echo dechex ( 58 );
以上程序語句會(huì)依次輸出:a, 3a
4.十六進(jìn)制:
4.1.十六進(jìn)制轉(zhuǎn)二進(jìn)制:
函數(shù):hex2bin(string $data);
轉(zhuǎn)換十六進(jìn)制字符串為二進(jìn)制字符串
@param $data 使用十六進(jìn)制表示的數(shù)據(jù)。
@return 返回給定數(shù)據(jù)的二進(jìn)制字符串或者在失敗時(shí)返回FALSE。
函數(shù)說明:
如果輸入的十六進(jìn)制字符串是奇數(shù)長(zhǎng)度或者是無效的十六進(jìn)制字符串,則會(huì)拋出一個(gè)E_WARNING級(jí)別的錯(cuò)誤。
范例:
<?php $hex = hex2bin ( "6368656e67206475" ); echo $hex;
以上程序語句會(huì)輸出:cheng du
4.2十六進(jìn)制轉(zhuǎn)十進(jìn)制:
函數(shù):hexdec(string $hex_string);
轉(zhuǎn)換十六進(jìn)制字符串為二進(jìn)制字符串
@param $hex_string 將要轉(zhuǎn)換的十六進(jìn)制的字符串。
@return 返回與$hex_string參數(shù)所表示的十六進(jìn)制數(shù)等值的十進(jìn)制數(shù)。
函數(shù)說明:
hexdec()
會(huì)忽略它遇到的任意非十六進(jìn)制的字符。
PHP 4.1.0 開始,該函數(shù)可以處理 integer大數(shù)字,這種情況下,它會(huì)返回float類型。
范例:
<?php var_dump ( hexdec ( "See" )); var_dump ( hexdec ( "ee" )); // 上面兩個(gè)都輸出: "int(238)" var_dump ( hexdec ( "that" )); // 輸出"int(10)" var_dump ( hexdec ( "a0" )); // 輸出"int(160)" //通過上面的例子可以看出來:hexdec()會(huì)忽略它遇到的任意非十六進(jìn)制的字符。
5.任意進(jìn)制轉(zhuǎn)換的base_convert() 函數(shù):
函數(shù):base_convert(string $number, int $frombase, int $tobase)
@param $number 將要轉(zhuǎn)換的的數(shù)。
@param $frombase參數(shù)$number的進(jìn)制。
@param $tobase 將要轉(zhuǎn)換成的進(jìn)制。
@return 返回一個(gè)包含$number以$tobase進(jìn)制表示的字符串。
函數(shù)說明:
$number本身的進(jìn)制由$formbase來指定。
$formbase和$tobase都只能是2和36(包括2和36)之間的整數(shù)值。
注意:由于使用內(nèi)部的 "double" 或 "float" 類型,base_convert()的操作可能會(huì)導(dǎo)致大數(shù)值中的精度丟失。
范例:
<?php $hexadecimal = 'A37334' ; echo base_convert ( $hexadecimal , 16 , 2 ); //print 101000110111001100110100 echo base_convert ( $hexadecimal , 16 , a); //print 10711860
PS:這里再為大家推薦幾款計(jì)算與轉(zhuǎn)換工具供大家參考使用:
在線任意進(jìn)制轉(zhuǎn)換工具:
http://tools.jb51.net/transcoding/hexconvert
科學(xué)計(jì)算器在線使用_高級(jí)計(jì)算器在線計(jì)算:
http://tools.jb51.net/jisuanqi/jsqkexue
在線計(jì)算器_標(biāo)準(zhǔn)計(jì)算器:
http://tools.jb51.net/jisuanqi/jsq
更多關(guān)于PHP相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《PHP數(shù)學(xué)運(yùn)算技巧總結(jié)》、《PHP數(shù)組(Array)操作技巧大全》、《PHP數(shù)據(jù)結(jié)構(gòu)與算法教程》、《php程序設(shè)計(jì)算法總結(jié)》、《PHP運(yùn)算與運(yùn)算符用法總結(jié)》、《php字符串(string)用法總結(jié)》及《php常見數(shù)據(jù)庫操作技巧匯總》
希望本文所述對(duì)大家PHP程序設(shè)計(jì)有所幫助。
- php進(jìn)行ip地址掩碼運(yùn)算處理的方法
- js驗(yàn)證IP及子網(wǎng)掩碼的合法性有效性示例
- js針對(duì)ip地址、子網(wǎng)掩碼、網(wǎng)關(guān)的邏輯性判斷
- JS驗(yàn)證IP,子網(wǎng)掩碼,網(wǎng)關(guān)和MAC的方法
- JavaScript在ASP頁面中實(shí)現(xiàn)掩碼文本框效果代碼
- PHP函數(shù)篇詳解十進(jìn)制、二進(jìn)制、八進(jìn)制和十六進(jìn)制轉(zhuǎn)換函數(shù)說明
- php 實(shí)現(xiàn)進(jìn)制轉(zhuǎn)換(二進(jìn)制、八進(jìn)制、十六進(jìn)制)互相轉(zhuǎn)換實(shí)現(xiàn)代碼
- php將字符串轉(zhuǎn)換成16進(jìn)制的方法
- PHP進(jìn)制轉(zhuǎn)換實(shí)例分析(2,8,16,36,64進(jìn)制至10進(jìn)制相互轉(zhuǎn)換)
- php和js實(shí)現(xiàn)根據(jù)子網(wǎng)掩碼和ip計(jì)算子網(wǎng)功能示例
相關(guān)文章
php中array_unshift()修改數(shù)組key注意事項(xiàng)分析
這篇文章主要介紹了php中array_unshift()修改數(shù)組key注意事項(xiàng),實(shí)例分析了array_unshift()函數(shù)在處理鍵值為數(shù)字類型時(shí)自動(dòng)轉(zhuǎn)換鍵值的情況,需要的朋友可以參考下2016-05-05Discuz板塊橫排顯示圖片的實(shí)現(xiàn)方法
Discuz板塊橫排顯示圖片的實(shí)現(xiàn)方法...2007-05-05PHP實(shí)現(xiàn)支持GET,POST,Multipart/form-data的HTTP請(qǐng)求類
這篇文章主要介紹了PHP實(shí)現(xiàn)支持GET,POST,Multipart/form-data的HTTP請(qǐng)求類,包括了連接與處理方式及相關(guān)的技巧,需要的朋友可以參考下2014-09-09