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 に答える