C# .Net Core 3.1:难以使用 System.Net.IPAddress 字节顺序交换
C# .Net Core 3.1: Having difficulty using System.Net.IPAddress byte order swapping
不好意思问一下应该是个简单的事情,但我一直在尝试使用IPAddress.NetworkToHostOrder
和IPAddress.HostToNetworkOrder
都无济于事。我在 Windows 钻机上,小端。这是令我困惑的小代码:
using System;
using System.Net;
public class Program
{
public static void Main()
{
int addr = 1;
Console.WriteLine($"{IPAddress.NetworkToHostOrder(addr)}");
Console.WriteLine($"{IPAddress.HostToNetworkOrder(addr)}");
}
}
此输出为:
16777216
16777216
其中之一的输出应该是 1
,对吧?我已经放弃了,并写了一个替代品来处理字节排序问题,但我无法为此使用 IPaddress
,这让我抓狂。
这些函数假设您已经以给定的字节顺序提供了一个输入值,并且总是希望将字节顺序交换为相反的字节顺序。他们无法知道您提供的值的字节顺序。所以,他们总是交换给他们的东西的顺序。
如 this answer 中所述,这两个函数存在的一个原因是用作文档并指示您要执行的顺序(主机与网络)from/to。
不好意思问一下应该是个简单的事情,但我一直在尝试使用IPAddress.NetworkToHostOrder
和IPAddress.HostToNetworkOrder
都无济于事。我在 Windows 钻机上,小端。这是令我困惑的小代码:
using System;
using System.Net;
public class Program
{
public static void Main()
{
int addr = 1;
Console.WriteLine($"{IPAddress.NetworkToHostOrder(addr)}");
Console.WriteLine($"{IPAddress.HostToNetworkOrder(addr)}");
}
}
此输出为:
16777216
16777216
其中之一的输出应该是 1
,对吧?我已经放弃了,并写了一个替代品来处理字节排序问题,但我无法为此使用 IPaddress
,这让我抓狂。
这些函数假设您已经以给定的字节顺序提供了一个输入值,并且总是希望将字节顺序交换为相反的字节顺序。他们无法知道您提供的值的字节顺序。所以,他们总是交换给他们的东西的顺序。
如 this answer 中所述,这两个函数存在的一个原因是用作文档并指示您要执行的顺序(主机与网络)from/to。