Эквивалент Marshal.PtrToString* методы для массива байтов

StackOverflow https://stackoverflow.com/questions/585683

  •  06-09-2019
  •  | 
  •  

Вопрос

Если у меня есть неуправляемый указатель, и я хочу перенести указанное количество байтов из этого местоположения в массив байтов, каков наилучший способ сделать это?

т. е.что является эквивалентом Marshal.Методы PtrToString *, но где адресатом является Byte()

Спасибо

Это было полезно?

Решение

Marshal.Copy имеет перегрузки для копирования массивов байтов в / из указателя.

Автор: Byte() является ли это взаимодействием с COM в стиле VB6?Почему вы хотите проверить базовый тип COM с помощью OLE-COM Viewer (входит в состав Windows SDK tools, установленных вместе с VS), чтобы открыть созданную VB dll и посмотреть, что написано в ее typelib.

Другие советы

Попробуйте следующий код

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);
  }
}
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top