Как скопировать данные из Pointer в Pointer в C #? - PullRequest
1 голос
/ 30 октября 2019

Я конвертирую старый код C ++ и мне нужна помощь с эквивалентом memcpy_s в C #. Мне нужно скопировать данные из одного указателя в другой указатель, как показано в этом коде C ++.

Я пробовал C ++ CopyMemory, Array.Copy и другие методы в соответствии с Google, однако ни один из них, похоже, не помогает. Я хотел бы преобразовать эквивалент в C # следующего кода, показанного ниже. Любая помощь будет высоко ценится.

memcpy_s((char*)pDIB + sizeof(BITMAPINFOHEADER), bmpHeader.biSizeImage,
            pRawData, bmpHeader.biSizeImage);

Этот код берет указатель и добавляет размер BITMAPHeader и добавляет к нему другие данные указателя. Я не вижу Marshal.PointerToPointer в C # и не знаю, как это написать.

1 Ответ

3 голосов
/ 30 октября 2019

Вам не нужно беспокоиться об указателях в C #, все управляется!

Если вы пытаетесь работать с растровыми данными, используйте управляемый класс Bitmap и создайте растровое изображение, используяпоток, установленный на необработанные байтовые данные. В качестве альтернативы вы можете использовать класс BitmapSource .

Если вы на самом деле все еще взаимодействуете с неуправляемым кодом и пытаетесь получать и извлекать данные, вы можете использовать GCHandle и закрепленные буферы. Но если вы конвертируете что-то в чистый C #, вы сможете полностью избавиться от указателей. Просто думайте о них как об объектах и ​​архитекторах из этого ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...