位置: 编程技术 - 正文

详谈php ip2long 出现负数的原因及解决方法(php ioc)

编辑:rootadmin

推荐整理分享详谈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、出现负数原因及处理方法

详谈php ip2long 出现负数的原因及解决方法(php ioc)

当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按一定格式转为编号后,很容易根据编号知道代表的

本文链接地址:https://www.jiuchutong.com/biancheng/292596.html 转载请保留说明!

上一篇:php生成0~1随机小数的方法(必看)(php生成随机字母数字代码)

下一篇:PHP的Laravel框架中使用消息队列queue及异步队列的方法(laravel phpstudy)

免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

鄂ICP备2023003026号

网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

友情链接: 武汉网站建设 电脑维修 湖南楚通运网络