程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> 關於PHP編程 >> PHP的ip2long和long2ip函數的實現原理

PHP的ip2long和long2ip函數的實現原理

編輯:關於PHP編程

最近要做個十進制數字的可逆轉換做邀請碼,一直沒搞清楚怎麼弄的,實在太復雜了,今天弄IP時想到這個可以進行轉換,於是研究了下原理:

主要是自己整理了下:


$ip = '12.34.56.78';
$ips = explode('.', $ip);
$result = 0;
$result += $ips[0]<<24;
$result += $ips[1]<<16;
$result += $ips[2]<<8;
$result += $ips[3];
echo bindec(decbin($result));
echo '
'; echo bindec(decbin(ip2long($ip))); echo '
'; $str = ''; $str .= intval($result/intval(pow(2, 24))) .'.'; $str .= intval(($result&0x00FFFFFF)/intval(pow(2, 16))) .'.'; $str .= intval(($result&0x0000FFFF)/intval(pow(2, 8))) .'.'; $str .= intval($result&0x000000FF); echo $str; echo '
'; echo long2ip($result);

以上輸出的結果為:

203569230
203569230
12.34.56.78
12.34.56.78


這只是實現的一種方法而已,還有其他的辦法

我是想用類似的方法,可以直接把一個十進制數字轉換為其他十進制數值並可逆,但遇到中間有很多0的數值時發現問題太多了,如 1000100




  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved