0

我有一个图像,包括图像标题,存储在 ac# 字节数组(字节 [])中。

标头位于字节数组的开头。如果我将标题放在一个结构中(就像我在 c++ 中所做的那样),它看起来像这样:

typedef struct RS_IMAGE_HEADER
{
   long HeaderVersion;
   long Width;
   long Height;
   long NumberOfBands;
   long ColorDepth;
   long ImageType;
   long OriginalImageWidth;
   long OriginalImageHeight;
   long OffsetX;
   long OffsetY;
   long RESERVED[54];
   long Comment[64];

} RS_IMAGE_HEADER;

如何在 c# 中执行此操作,如何获取和使用图像标头中的所有数据(存储在字节数组的开头)?

谢谢

4

2 回答 2

0

结构在 C# 中非常好,因此结构应该没有问题,与您编写的完全一样,尽管您可能需要添加权限修饰符,例如public. 要将字节数组转换为其他原语,有一类非常有用的方法,其中包括ToInt64(),可帮助您将字节数组转换为另一种内置类型(在本例中long)。要获取您需要的特定数组字节序列,请查看有关在 C# 中执行数组切片的各种技术的这个问题

于 2012-10-31T16:42:18.300 回答
0

最简单的方法是在 C# 中创建一个模拟数据结构,我不会在这里讨论,因为它几乎相同。下面是从数组中读取单个字节的示例。

int headerVersionOffset = ... // defined in spec
byte[] headerVersionBuffer = new byte[sizeof(long)];
Buffer.BlockCopy(imageBytes, headerVersionOffset, headerVersionBuffer, 0, sizeof(long));
//Convert bytes to long, etc.
long headerVersion = BitConverter.ToInt64(headerVersionBuffer, 0);

您可能希望使其适应您的数据结构和使用情况,您也可以使用流或其他自定义数据结构来自动为您处理数据。

于 2012-10-31T16:42:21.343 回答