>>180
やりたいことは
put( unsigned char ) と write( const unsigned char*, streamsize )
を使ってバイナリデータをファイルに書き込むことです。
このとき1バイトは0から255を表現できないといけないので最低 unsigned char の型が必要です。
型が char の場合、どの処理系でも使える範囲は0から127までなので目的を果たせません。