array c# c mono bytearray memcmp

c# - array - ¿Hay un equivalente de memcmp para comparar matrices de bytes en Mono?



compare byte array c# (2)

Existe una eficacia conocida para comparar dos matrices de bytes en .Net al importar la función msvcrt.dll de msvcrt.dll , como se describe aquí .

¿Hay una importación de biblioteca equivalente en mono? ¿Tendría que ser diferente cuando se ejecuta mono en Linux o en Windows? ¿O hay otra técnica de comparación de matriz de bytes rápida que funciona bien en mono? Estoy buscando algo mejor que simplemente iterar sobre las matrices en c #.

Actualizar

Basado en el comentario de Matt Patenaude, creo que esto podría funcionar bien:

#if __MonoCS__ [DllImport("c", CallingConvention = CallingConvention.Cdecl)] #else [DllImport("msvcrt.dll", CallingConvention = CallingConvention.Cdecl)] #endif public static extern int memcmp(byte[] b1, byte[] b2, UIntPtr count);

Pero aún no lo he intentado. Nunca he hecho p / invoke en mono antes. Estoy usando la firma recomendada en pinvoke.net . ¿Esto va a ser compatible?

Buscando una respuesta enfocada en Mono. Gracias.


Puede usar bloques de código unsafe para acceder a matrices de bytes casi tan rápido como el memcmp nativo. Antes de seguir por ese camino, asegúrese de que un ciclo directo no sea lo suficientemente rápido para sus propósitos.


Según su actualización, no debería usar el preprocesador __MonoCS__ . Significa que tendrías que recompilar la biblioteca para Mono y .NET. La mejor manera es usar la funcionalidad dllmap en Mono y solo usar el msvcrt.dll .

En su lugar, defina un "AssemblyName.dll.config" y utilice la etiqueta dllmap para asignar msvcrt.dll a c cuando se ejecute en Mono.

Ejemplo:

<configuration> <dllmap dll="msvcrt.dll" target="libc.so.6" /> </configuration>

Más detalles en dllmap aquí: http://www.mono-project.com/Config_DllMap

EDITAR

Y si por algún motivo c no funciona, libc.so debería funcionar.