C# 如何在c中从指向内存流的int指针获取数据?

C# 如何在c中从指向内存流的int指针获取数据?,c#,pointers,tiff,memorystream,C#,Pointers,Tiff,Memorystream,我使用一个API和一个方法将图像存储到内存流中,但该方法返回的值是指向内存流的整数指针和一个大小值。c是否支持使用指针的c风格内存操作 如何从内存指针获取图像并将其保存到文件流或另存为文件?有人可以参考一下这方面的任何指示吗?您可以这样读取内存流: using (System.IO.UnmanagedMemoryStream memoryStream = new UnmanagedMemoryStream(pointer, length, length, FileAccess.Read)) {

我使用一个API和一个方法将图像存储到内存流中,但该方法返回的值是指向内存流的整数指针和一个大小值。c是否支持使用指针的c风格内存操作


如何从内存指针获取图像并将其保存到文件流或另存为文件?有人可以参考一下这方面的任何指示吗?

您可以这样读取内存流:

using (System.IO.UnmanagedMemoryStream memoryStream = new UnmanagedMemoryStream(pointer, length, length, FileAccess.Read))
{
    byte[] imageBytes = new byte[length];
    memoryStream.Read(imageBytes, 0, length);
}

然后解析字节以创建新图像或任何您需要的内容。

您可以像这样读取内存流:

using (System.IO.UnmanagedMemoryStream memoryStream = new UnmanagedMemoryStream(pointer, length, length, FileAccess.Read))
{
    byte[] imageBytes = new byte[length];
    memoryStream.Read(imageBytes, 0, length);
}

然后解析字节以创建新图像或任何您需要的内容。

如果您知道代码使用流,那么返回的内容实际上不太可能是int*。更可能是一个接口指针,如IStream*。我们只能猜测。问供应商,他们知道。@HansPassant你是对的,返回的是指针,不知道为什么他们返回整数。ThanksPretty如果您知道代码使用了一个流,那么您得到的实际上是一个int*。更可能是一个接口指针,如IStream*。我们只能猜测。问供应商,他们知道。@HansPassant你是对的,返回的是指针,不知道为什么他们返回整数。非常感谢。。我能够提取它,但我必须使代码不安全,然后在读取它之前将整数键入字节*。但我有一个问题-如下流有一个单页tiff图像。当我写入一个文件时,我能够从文件中很好地看到图像,但在连续循环中,当我读写文件时,文件会变得更胖,写入的字节更多,但它不会显示为多页tif文件。当我打开它时,它只显示第一页。有什么想法吗?你不能只是在同一个文件中写入更多页面,使其成为多页面tiff。您需要将它们写入单独的文件中,或者了解如何修改二进制数据和格式以合并它们。您好,非常感谢。。我能够提取它,但我必须使代码不安全,然后在读取它之前将整数键入字节*。但我有一个问题-如下流有一个单页tiff图像。当我写入一个文件时,我能够从文件中很好地看到图像,但在连续循环中,当我读写文件时,文件会变得更胖,写入的字节更多,但它不会显示为多页tif文件。当我打开它时,它只显示第一页。有什么想法吗?你不能只是在同一个文件中写入更多页面,使其成为多页面tiff。您需要将它们写入单独的文件中,或者了解如何修改二进制数据和格式以合并它们。