ビットマップにパディングバイトを追加する方法は?
質問
ファイルに書き込みたいラスターデータがあるとしましょう..bmpファイルとして書き込みたいと思います。
このデータはたまたまDWORDに揃えられていないため、正しく理解できれば、次のDWORDに到達するのに十分なバイトを埋め込む必要があります。
ただし、次のコードでパディングしようとすると:
bmFile.Write(0x0, (4-(actualWidth%4)));
エラーが発生します。デバッグしようとすると(MSVC ++ 6.0を使用しています)、次のステートメントは、最初のパラメーターがNULLであることをアサートするCFile :: WriteのASSERTを指します。 / p>
どのようにパディングするのですか?書き出す必要があります:
bmFile.Write("0x0"(4-(actualWidth%4)));
代わりに?または、これは文字通り処理されますか...
ありがとう..
解決
おそらく試してみてください:
bmFile.Write("\0\0\0\0", (4-(actualWidth%4)));
最初の例は、あなたが言うように、nullポインタが指すデータを書き込もうとすることです。 2番目の例では、ASCII値0x30、0x78、0x30を持つバイト '0'、 'x'、 '0'から書き込みますが、これはおそらく意図しないものです。
所属していません StackOverflow