首页 > 解决方案 > 如何在 C# 中将数据从指针复制到指针?

问题描述

我正在转换旧版 C++ 代码,需要 C# 中等效的 memcpy_s 的帮助。我需要将一个指针中的数据复制到另一个指针,如此 C++ 代码所示。

我根据谷歌尝试了 C++ CopyMemory、Array.Copy 和其他方法,但它们似乎都没有帮助。我想在 C# 中转换下面显示的以下代码的等价物。任何帮助将不胜感激。

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

此代码获取指针并添加 BITMAPHeader 的大小并向其添加另一个指针数据。我在 C# 中没有看到任何 Marshal.PointerToPointer 并且不知道如何编写它。

标签: c#c++.netunmanaged

解决方案


您无需担心 C# 中的指针,一切都是托管的!

如果您尝试使用位图数据,请使用托管Bitmap类并使用设置为原始字节数据的流创建位图。或者,您可以使用BitmapSource类。

如果您实际上仍在与非托管代码交互并尝试从其中获取数据,则可以使用GCHandle和固定缓冲区。但是,如果您将某些东西转换为纯 C#,您应该能够完全放弃指针。只需将它们视为对象实例和架构师......


推荐阅读