C# 如何实现System.Net.IPAddress.HostToNetworkOrder和NetworkToHostOrder
C# 如何实现System.Net.IPAddress.HostToNetworkOrder和NetworkToHostOrder,c#,C#,HostToNetworkOrder方法将存储在主机系统上的多字节整数值从主机使用的字节顺序转换为网络使用的字节顺序,而NetworkToHostOrder则相反 问题是如何在C#中实现这些方法,假设它在系统库中不可用 假设系统库中没有这些方法,如何在C#中实现这些方法 它是可用的,因此不要重新实施它: 假设系统库中没有这些方法,如何在C#中实现这些方法 它是可用的,因此不要重新实施它: .NET自2014年11月以来一直是开源的,因此您只需从这里复制类即可: 官方的HostToNetwor
HostToNetworkOrder
方法将存储在主机系统上的多字节整数值从主机使用的字节顺序转换为网络使用的字节顺序,而NetworkToHostOrder
则相反
问题是如何在C#中实现这些方法,假设它在系统库中不可用
假设系统库中没有这些方法,如何在C#中实现这些方法
它是可用的,因此不要重新实施它:
假设系统库中没有这些方法,如何在C#中实现这些方法
它是可用的,因此不要重新实施它:
.NET自2014年11月以来一直是开源的,因此您只需从这里复制类即可: 官方的
HostToNetworkOrder
实现是:
public static long HostToNetworkOrder(long host) {
#if BIGENDIAN
return host;
#else
return (((long)HostToNetworkOrder((int)host) & 0xFFFFFFFF) << 32)
| ((long)HostToNetworkOrder((int)(host >> 32)) & 0xFFFFFFFF);
#endif
}
公共静态长主机网络订单(长主机){
#如果是BIGENDIAN
返回主机;
#否则
返回((长)主机网络顺序((int)主机)和0xFFFFFFFF)>32))&0xFFFFFFFF);
#恩迪夫
}
@brunolemos.NET自2014年11月以来一直是开源的,因此您只需从这里复制类即可: 官方的
HostToNetworkOrder
实现是:
public static long HostToNetworkOrder(long host) {
#if BIGENDIAN
return host;
#else
return (((long)HostToNetworkOrder((int)host) & 0xFFFFFFFF) << 32)
| ((long)HostToNetworkOrder((int)(host >> 32)) & 0xFFFFFFFF);
#endif
}
公共静态长主机网络订单(长主机){
#如果是BIGENDIAN
返回主机;
#否则
返回((长)主机网络顺序((int)主机)和0xFFFFFFFF)>32))&0xFFFFFFFF);
#恩迪夫
}
@布鲁诺莱莫斯你试过什么?我建议你研究一下这个函数是如何工作的,试着使用它,确保你理解它,然后试着实现它。一旦你陷入困境,回来问一些具体的问题。你试过什么?我建议你研究一下这个函数是如何工作的,试着使用它,确保你理解它,然后试着实现它。一旦你陷入困境,请回来问一些具体的问题。例如,在为Win8应用商店应用程序编程时,这些问题是不可用的。我明白了。然而,我提到了我对op的第一个评论:你尝试了什么?检测系统字节顺序然后构造一个位移位+掩码算法几乎是微不足道的,可以通过谷歌搜索来解决。它也不是特定于C#的(系统字节顺序检测除外,它是特定于CLR的)显示了如何在networktohostorder API不可用的平台上执行此操作。例如,在为Win8应用商店应用程序编程时,它们不可用。请注意。然而,我提到了我对op的第一个评论:你尝试了什么?检测系统字节顺序然后构造一个位移位+掩码算法几乎是微不足道的,可以通过谷歌搜索来解决。它也不是C#特定的(除了检测系统字节顺序,这是CLR特定的)显示了如何在networktohostorder API不可用的平台上执行此操作。