Equivalentes a Marshal.PtrToString * métodos para la matriz de bytes
-
06-09-2019 - |
Pregunta
Si tengo un puntero no administrado y quiero transferir un número especificado de bytes de ese lugar a una matriz de bytes, lo que es la mejor manera de hacer esto?
es decir. lo que es el equivalente de Marshal.PtrToString * métodos, pero en el que el destino es un byte ()
Gracias
Solución
Marshal.Copy
tiene sobrecargas para las matrices de bytes copiado a / desde un puntero.
Por Byte()
es la interoperación con este estilo COM VB6? Por qué desea comprobar el tipo COM subyacente mediante el Visor OLE-COM (incluido en las herramientas del SDK de Windows instalados con VS) para abrir la VB DLL creado para mirar que su biblioteca de tipos dice.
Otros consejos
Trate el siguiente código
public static byte[] PtrToByteArray(IntPtr ptr, int len) {
var array = new byte[len];
for ( int i = 0; i < len; i++ ) {
array[i] = (byte)Marshal.PtrToStructure(ptr, typeof(byte));
ptr = new IntPtr(ptr.ToInt64()+IntPtr.Size);
}
}
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow