質問: バイナリファイルの書き出し バイナリファイルにデータを書き込むプログラムを作りたいと思っています。実は、standard midi fileのバイナリファイルを作りたいんです。 smfについては、今まで、直接バイナリエディタで開き、16進数の数字をいじくって、データ書き換えたりしてたので直接バイナリファイルに16進数での数字を書きたいんです。 たとえば、テキストファイルに903c408360803c0000みたいに吐き出すプログラムでは、バイナリファイルに書き出してからバイナリエディタで開くと こいつがさらに16進数に変換されてしまいますよね? そうならないようにするにはどうやればいいんですか?
回答: itohh氏の回答へのお礼をみていて思ったのですが... コレ、「90」の十六進数をテキストに出力したいんじゃなくて 書き出したファイルをバイナリエディタで開いたときに 1バイト目の値が「90」になるように書き出したいんではないですか? で、そう仮定して書きます。 よく知らないので自信がありませんが、こういうときは "stdio.h"内のfwrite関数かと思います。 書式はfwrite(const void* buf, size_t size, size_t n, file* fo); でbufの内容をsizeバイトずつn個、foで開いたファイルに書き出します。 これで、このときbufに903c408360803c0000(十六進数で一バイトずつ)を 書き込んでおけば、狙ったとおりに出力されるんではないかと。 もっと効率のいい書き方がありそうですが...