C#にネットからホストへの変換関数はありますか? グーグルで検索してもあまり見つかりません。:P
3 に答える
IPAddress.HostToNetworkOrderそしてIPAddress.NetworkToHostOrder?
各メソッドには、16、32、および 64 ビット整数のオーバーロードがあります。
System.Memory nugetパッケージにはSystem.Buffers.Binary.BinaryPrimitivesstatic クラスが含まれており、ReverseEndianness. dotnet コアでは、これらのメソッドHostToNetWorkOrderを使用して実装されます。ReverseEndiannessリトルエンディアン アーキテクチャ (.NET をサポートするのはこれだけだと思います) ではHostToNetworkOrder、ReverseEndiannessメソッドは dotnetcore で同じパフォーマンスを発揮します。
ただし、dotnet フレームワーク (net461) では、呼び出しのパフォーマンスは呼び出しHostToNetworkOrderよりもわずかに (2 倍ではない) 遅くなりReverseEndiannessます。
私は、JIT コンパイラは実際にはこれらのメソッドを特別にケーシングして、BSWAP x86 命令を呼び出すと考えています。独自のコードベースでメソッドの実装を正確に複製すると、実装をReverseEndianness(long)呼び出すよりも約 4 倍遅くなりSystem.Memoryます。JITマジックが起こっていることを示唆しています。