程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> 關於PHP編程 >> 探討PHP函數ip2long轉換IP時數值太大產生負數的解決方法

探討PHP函數ip2long轉換IP時數值太大產生負數的解決方法

編輯:關於PHP編程

【造成原因】:Because PHP's integer type is signed, and many IP addresses will result in negative integers.
【解決辦法】:其官方手冊中提到,可以“you need to use the "%u" formatter of sprintf() or printf() to get the string representation of the unsigned IP address”
即,printf( '%u', ip2long( 'IP地址' ) );
或者將其先轉換為二進制然後在轉換為十進制,bindec( decbin( ip2long( 'IP地址' ) ) );
【測試】
$strIp = '182.118.0.0';

echo ip2long($strIp); //此時輸出的-1233780736
echo '<br/>';
echo bindec( decbin( ip2long( $strIp ) ) ); // 輸出3061186560,與MySQL函數輸出一致~

【注】:
number bindec ( string $binary_string ); //二進制轉換為十進制
string decbin ( int $number ); //十進制轉換為二進制

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