c# - 如何在 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# 中的指针,一切都是托管的!
如果您尝试使用位图数据,请使用托管Bitmap类并使用设置为原始字节数据的流创建位图。或者,您可以使用BitmapSource类。
如果您实际上仍在与非托管代码交互并尝试从其中获取数据,则可以使用GCHandle和固定缓冲区。但是,如果您将某些东西转换为纯 C#,您应该能够完全放弃指针。只需将它们视为对象实例和架构师......
推荐阅读
- angular - 如何禁用getter对象的设置值
- html - Favicon:格式错误的开始标记。属性应该用空格分隔
- android - 选择基于 Sqlite 查询的条件
- java - 线程优先级无法正常工作。我在代码中做错了什么?
- android - org.gradle.internal.resolve.ArtifactNotFoundException:找不到 play-services-basement.aar
- javascript - 如何从 next() 获取输入值
- python - 根据models.py中的用户应用迁移,而不是根据数据库中的迁移应用
- javascript - 使用嵌套表单数组获取“路径错误”
- actionscript-3 - 如何在 ActionScript 中捕获流错误
- android - 在我的应用程序上发现未知数据库和数据库操作