Entspricht Marshal.PtrToString * Methoden für Byte-Array
-
06-09-2019 - |
Frage
Wenn ich einen nicht verwalteten Zeiger haben und ich möchte von dieser Stelle zu einem Byte-Array eine bestimmte Anzahl von Bytes übertragen, was ist der beste Weg, dies zu tun?
d. was ist das Äquivalent von Marshal.PtrToString * Methoden aber, wo das Ziel ist ein Byte ()
Danke
Lösung
Marshal.Copy
hat Überlastungen für das Kopieren Byte-Arrays zu / von einem Zeiger.
Mit dem Byte()
ist diese Interoperabilität mit COM VB6 Stil? Sie, warum wollen den zugrunde liegenden COM-Typen mit dem OLE-COM Viewer (enthielt in den Windows SDK-Tool mit VS installiert ist) zu überprüfen, die VB-DLL zu betrachten erstellt zu öffnen, dass sein typelib sagt.
Andere Tipps
Versuchen Sie, den folgenden Code
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);
}
}
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow