Tengo una matriz de algún tipo ( short[] , int[] o un tipo base similar). Quiero enviarlo a través de una secuencia, así que necesito que sea byte[] . La solución estándar parece ser crear una nueva matriz byte[] y usar BitConverter . El problema con este enfoque es el rendimiento y el uso de la memoria: requiere asignar toda la memoria nueva, copiarla en la nueva memoria y luego escribir el byte[] en la transmisión.
Tengo muchas ganas de usar la memoria de respaldo original de la matriz int[] como una matriz byte[] para poder enviarla en el lugar. Estoy dispuesto a hacer cumplir el requisito de que el sistema de envío y recepción debe tener el mismo endianness, por el bien de esta diferencia de rendimiento muy obvia y muy significativa.
¿Hay alguna forma de tratar una matriz de int[] o similar, como un byte[] en el lugar?
Si puede usar Span<T> (.net core 3+):
void Send(int[] data) { ReadOnlySpan<byte> byteRef = MemoryMarshal.AsBytes(data.AsSpan()); _stream.Write(byteRef); }