- - PR -
16bit数値をファイルに書き込む方法を教えてください。
1
| 投稿者 | 投稿内容 | ||||
|---|---|---|---|---|---|
|
投稿日時: 2003-11-26 16:59
暗号化したデータをファイルに保存しようとしています。
###################################################################### // FileInputStreamオブジェクトの生成 FileInputStream moto = new FileInputStream("test.txt"); // InputStreamReaderオブジェクトの生成 InputStreamReader in = new InputStreamReader(moto, "Shift_JIS"); int contents; while ((contents = in.read( )) != -1) { } ###################################################################### 上記のようにして元となるテキストファイルから1文字ずつ「contents」に読み込んでいます。 intなので16bit(-32768〜32767)までの数値を表現できると思っていました。 そこで読み込んだデータの数値をずらして(加減算して)ファイルに書き込んだのですが 値によっては3Fとして書き込まれてしまいました。 試しに以下のようにして、バイナリエディタで書き込み結果を見てみたのですが ちゃんと書き込めている部分もあるのですが、3Fに置き換わってしまっている 部分が大半でした。 ###################################################################### // FileOutputStreamオブジェクトの生成 FileOutputStream outfd = new FileOutputStream("sample.txt"); // OutputStreamWriterオブジェクトの生成 OutputStreamWriter out = new OutputStreamWriter(outfd, "Shift_JIS"); for( i=0; i<=32767 ; i++){ out.write(i); } ###################################################################### 数値の値をそのまま書き込む方法はないのでしょうか? OutputStreamWriterオブジェクトの生成時に指定しているエンコード方式を 変えれば良いのでしょうか? | ||||
|
投稿日時: 2003-11-26 17:10
Writerを継承したクラスはみなキャラクタ出力用ですよ。 バイナリでファイルに出力したいのでしたら、FileOutputStreamをBufferedOutputStreamでラップして使えば良いのでは? 数値なのにエンコーディングなんて関係ありませんよね? | ||||
|
投稿日時: 2003-11-26 18:06
できました。
FileOutputStreamをBufferedOutputStreamに置き換えてファイル出力したところ 数値の値が3Fに化けたりせずに、そのまま書き込まれました。 回答ありがとうございました。 | ||||
1
