Pregunta

¿Hay red para albergar funciones de conversión en C #? Buscar en Google y no encontrar mucho. : P

¿Fue útil?

Solución

IPAddress.HostToNetworkOrder y IPAddress.NetworkToHostOrder ?

Cada método tiene sobrecargas para 16, 32 y 64 bits enteros.

Otros consejos

@ Jon-skeet respuesta es el más preciso de acuerdo a su pregunta. Sin embargo, 'ntoh_' y 'hton_' funciones de C se utilizan ampliamente con el fin de traducir entre href="https://en.wikipedia.org/wiki/Endianness" ascendente hacia la izquierda y grande -endian arquitecturas de computadora .

Si su intención es para realizar las conversiones endianess , hay un clase BitConverter (clase estática en el conjunto del núcleo) que le ofrece una manera más conveniente. Especialmente cuando:

  • Trabajar con matriz de bytes (ampliamente utilizados en archivos o flujos de red).
  • Detectando endianess arquitectura de la máquina de tiempo de ejecución .
  • La conversión de las estructuras básicas más allá de los números enteros, decimales (booleanos) sin encasillamiento.
  • El código no está relacionada con las operaciones de red (System.Net de espacio de nombres).

El System.Memory Nuget paquete incluye la clase estática System.Buffers.Binary.BinaryPrimitives, que incluye métodos estáticos para tratar con "orden de bits", incluyendo muchos sobrecargas de ReverseEndianness. En núcleo dotnet, HostToNetWorkOrder se implementa utilizando estos métodos ReverseEndianness. En una arquitectura ascendente hacia la izquierda (que creo que es todo lo que el apoyo .NET) y métodos HostToNetworkOrder ReverseEndianness tienen un rendimiento idéntico en dotnetcore.

El framework .NET (net461) Sin embargo, el rendimiento de llamar HostToNetworkOrder es ligeramente (no del todo 2x) más lento que llamar ReverseEndianness.

Creo que el compilador JIT es en realidad carcasa especial de estos métodos para invocar la instrucción BSWAP x86. Si duplica exactamente la puesta en práctica del método ReverseEndianness(long) en su propia base de código, será casi 4 veces más lento que llamar a la aplicación System.Memory; lo que sugiere que hay magia JIT sucediendo.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top