1

ファイルに書きたいラスターデータがあるとしましょう..今度はそれをbmpファイルとして書きたい..

このデータはたまたま DWORD で整列されていません。正しく理解できれば、次の DWORD に到達するのに十分なバイト数でパディングする必要があります..

ただし、このコードでパディングしようとすると:

bmFile.Write(0x0, (4-(actualWidth%4)));

エラーが発生します..デバッグしようとすると (私は MSVC++ 6.0 を使用しています)、次のステートメントは、最初のパラメーターが NULL であることをアサートする CFile::Write の ASSERT を指します..したがって、これは失敗します..

どのように詰めればよいですか?私は書き出す必要があります:

bmFile.Write("0x0"(4-(actualWidth%4)));

代わりは?または、これは文字通り扱われますか...?

ありがとう..

4

1 に答える 1

3

おそらく試してみてください:

bmFile.Write("\0\0\0\0", (4-(actualWidth%4)));

あなたの最初の例は、あなたが言うように、null ポインターが指すデータを書き込もうとすることです。2 番目の例では、ASCII 値 0x30、0x78、0x30 を持つバイト '0'、'x'、'0' から書き込みますが、これはおそらく意図したものではありません。

于 2009-01-07T02:58:46.367 に答える