将整型ip转换为ipaddress对象.字符串ip反过来

本文关键字:ip 对象 字符串 ipaddress 反过来 整型 转换 | 更新日期: 2023-09-27 18:08:08

我正在从使用ip2long()的php生成的网页反序列化数据。但是,当我试图通过在IPAddress的构造函数中使用整数值来创建新的ip地址时,ip地址的虚线版本是相反顺序的?

,

4.3.2.1应该是1.2.3.4

有什么办法解决这个问题吗?

将整型ip转换为ipaddress对象.字符串ip反过来

听起来像是有人在使用小端序,有人在使用网络字节顺序(大端序)来打包值。例如,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的标准