Saltar al contenido

C# cómo obtener bytes[] de IntPtr

Intenta entender el código correctamente previamente a utilizarlo a tu proyecto si tquieres aportar algo puedes compartirlo con nosotros.

Solución:

si es un byte[] array:

 byte[] managedArray = new byte[size];
 Marshal.Copy(pnt, managedArray, 0, size);

si no es byte[]el parámetro de tamaño en Marshal.Copy es el número de elementos en el array, no el tamaño en bytes. Entonces, si tuvieras un int[] array en lugar de un byte[] arraytendría que dividir por 4 (bytes por int) para obtener la cantidad correcta de elementos para copiar, suponiendo que su parámetro de tamaño pasado a través de la devolución de llamada se refiera a la cantidad de bytes.

¿Has buscado en Marshal.Copy?

http://msdn.microsoft.com/en-us/library/system.runtime.interopservices.marshal.copy.aspx

Si necesita rendimiento, úselo directamente:

unsafe  
    byte *ptr = (byte *)buffer.ToPointer();

    int offset = 0;
    for (int i=0; i

Nos puedes añadir valor a nuestro contenido informacional tributando tu experiencia en las críticas.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *