位置: 编程技术 - 正文
推荐整理分享详谈php ip2long 出现负数的原因及解决方法(php ioc),希望有所帮助,仅作参考,欢迎阅读内容。
文章相关热门搜索词:php nl2br,php -i,php02,php -i,php ipam,php ping ip,php ioc di,php ioc di,内容如对您有帮助,希望把文章链接给更多的朋友!
php提供了ip2long与long2ip方法对ip地址处理。
1、ip2long — 将一个IPV4的字符串互联网协议转换成数字格式
int ip2long ( string $ip_address )
参数: ip_address 一个标准格式的地址。
返回值: 返回IP地址转换后的数字 或 FALSE 如果 ip_address 是无效的。
2、long2ip — 将数字格式转换成一个IPV4的字符串互联网协议
string long2ip ( string $proper_address )
参数: proper_address 长整型的正确地址表示。
返回值: 返回互联网地址作为字符串。
3、使用方法
4、出现负数原因及处理方法
当ip地址比较大时,ip2long会出现负数:
原因说明:
IPv4使用无符号位地址,因此最多有2的次方减1()个地址。书写用4个小数点分开的进制数。
记为A.B.C.D,例如:...。
IPv4地址每个进制数都是无符号的字节,范围在0~,将IPv4地址转为无符号数,其实就是将每个进制数放在对应的8位上,组成一个4字节的无符号整型。...,,在高8位,在低8位。
C实现的例子:
可以看到,即使ip_long声明是无符号整型,输出时依然需要指明%u来格式化输出为无符号整型。
因为大于(二进制为),(8位)用二进制表示,最高位必然是1。导致这个4字节整型的最高位为1。
虽然ip_long定义为无符号整型,但printf方法是不理会声明的。所以需要使用%u格式化来输出。如果最高位是0,则使用%d即可。
另一个例子:
解决方法:
输出时用%u来格式化为无符号整型。
以上这篇详谈php ip2long 出现负数的原因及解决方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持积木网。
浅谈php(codeigniter)安全性注意事项 1、httponlysession一定要用httponly的否则可能被xxs攻击,利用js获取cookie的session_id。要用框架的ci_session,更长的位数,httponly,这些默认都配好了。不要用
php及codeigniter使用session-cookie的方法(详解) 1、读写cookie1原生setcookie('name','value',time)设置失败,没有正常写入浏览器,测试失败,原因未知2CI框架$this-input-set_cookie("views","test",);echo$_COOKIE["views"
php 根据自增id创建唯一编号类 在开发过程中,我们数据表一般都使用自增数字作为id主键,而id是数字型,不容易理解。我们把id按一定格式转为编号后,很容易根据编号知道代表的
标签: php ioc
本文链接地址:https://www.jiuchutong.com/biancheng/292596.html 转载请保留说明!友情链接: 武汉网站建设