Вопрос

Существует ли сеть для размещения функций преобразования в C #?Погуглил и почти ничего не нашел.:P

Это было полезно?

Решение

IPAddress.HostToNetworkOrder и IPAddress.NetworkToHostOrder?

Каждый метод имеет перегрузки для 16, 32 и 64-битных целых чисел.

Другие советы

Ответ @jon-skeet является наиболее точным согласно вашему вопросу.Однако функции C «ntoh_» и «hton_» широко используются для перевода между компьютерные архитектуры с прямым порядком байтов и прямым порядком байтов.

Если ваше намерение выполнять преобразования порядка байтов, Eсть Класс BitConverter (статический класс в основной сборке), который предлагает вам более подходящий способ.Особенно когда:

  • Работа с массивом байтов (широко используется в файловых или сетевых потоках).
  • Обнаружение порядка байтов Архитектура машины времени выполнения.
  • Преобразование базовых структур помимо целых чисел (логических, десятичных чисел) без приведения типов.
  • Ваш код не связан с сетевыми операциями (пространство имен System.Net).

Тот Самый Система.Память пакет nuget включает в себя System.Buffers.Binary.BinaryPrimitives статический класс, который включает в себя статические методы для работы с "порядковым номером", включая множество перегрузок ReverseEndianness.В ядре dotnet, HostToNetWorkOrder реализуется с использованием этих ReverseEndianness методы .На малоэффективной архитектуре (которая, я думаю, является единственной, поддерживающей .NET) HostToNetworkOrder и ReverseEndianness методы имеют одинаковую производительность на dotnetcore.

Однако в платформе dotnet (net461) производительность вызова HostToNetworkOrder немного (не совсем в 2 раза) медленнее, чем вызов ReverseEndianness.

Я считаю, что JIT-компилятор на самом деле специально использует эти методы для вызова инструкции BSWAP x86.Если вы точно продублируете реализацию ReverseEndianness(long) метод в вашей собственной кодовой базе, это будет почти в 4 раза медленнее, чем вызов System.Memory реализация;предполагая, что происходит JIT-магия.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top