41

C#にネットからホストへの変換関数はありますか? グーグルで検索してもあまり見つかりません。:P

4

3 に答える 3

54

IPAddress.HostToNetworkOrderそしてIPAddress.NetworkToHostOrder

各メソッドには、16、32、および 64 ビット整数のオーバーロードがあります。

于 2010-03-10T20:15:10.763 に答える
5

System.Memory nugetパッケージにはSystem.Buffers.Binary.BinaryPrimitivesstatic クラスが含まれており、ReverseEndianness. dotnet コアでは、これらのメソッドHostToNetWorkOrderを使用して実装されます。ReverseEndiannessリトルエンディアン アーキテクチャ (.NET をサポートするのはこれだけだと思います) ではHostToNetworkOrderReverseEndiannessメソッドは dotnetcore で同じパフォーマンスを発揮します。

ただし、dotnet フレームワーク (net461) では、呼び出しのパフォーマンスは呼び出しHostToNetworkOrderよりもわずかに (2 倍ではない) 遅くなりReverseEndiannessます。

私は、JIT コンパイラは実際にはこれらのメソッドを特別にケーシングして、BSWAP x86 命令を呼び出すと考えています。独自のコードベースでメソッドの実装を正確に複製すると、実装をReverseEndianness(long)呼び出すよりも約 4 倍遅くなりSystem.Memoryます。JITマジックが起こっていることを示唆しています。

于 2018-06-26T15:52:11.673 に答える