将整型ip转换为ipaddress对象.字符串ip反过来
本文关键字:ip 对象 字符串 ipaddress 反过来 整型 转换 | 更新日期: 2023-09-27 18:08:08
我正在从使用ip2long()的php生成的网页反序列化数据。但是,当我试图通过在IPAddress的构造函数中使用整数值来创建新的ip地址时,ip地址的虚线版本是相反顺序的?
,
4.3.2.1应该是1.2.3.4
有什么办法解决这个问题吗?
听起来像是有人在使用小端序,有人在使用网络字节顺序(大端序)来打包值。例如,octect序列妥协一个整数,LE中的AA,BB,CC,DD
在BE/NBO中是DD,CC,BB,AA
——一个很好的对称反转!
因为IPAddress(Int64)构造函数文档说:
Int64值假定为网络字节顺序。
我会想象 PHP中的ip2long
正在生成一个小端值。好在IPAddress
也需要byte[]
作为构造器,现在让你的手肘油腻起来吧…按"正确"的顺序传递字节。
幸福的编码。
的代码在如何转换一个int到一个小的字节数组?应该给一些想法。
或者,正如Josh指出的,有一个HostToNetworkOrder方法可以做到这一点。
使用long2ip()
来逆转ip2long()
的进程
<?php
// make sure IPs are valid. also converts a non-complete IP into
// a proper dotted quad as explained below.
$ip = long2ip(ip2long("127.0.0.1")); // "127.0.0.1"
$ip = long2ip(ip2long("10.0.0")); // "10.0.0.0"
$ip = long2ip(ip2long("10.0.256")); // "10.0.1.0"
?>
应该不会有任何问题毕竟这是php的标准