C# .Net Core 3.1:难以使用 System.Net.IPAddress 字节顺序交换

C# .Net Core 3.1: Having difficulty using System.Net.IPAddress byte order swapping

不好意思问一下应该是个简单的事情,但我一直在尝试使用IPAddress.NetworkToHostOrderIPAddress.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。