アプリ版:「スタンプのみでお礼する」機能のリリースについて

はじめまして。
教えていただきたいのですが、ストリーム(例えばFileOutputStream)のread()メソッドについてす。
読み込みファイルの最後に達した場合-1をリターンするとあるのですがファイルの値で-1を持っていた場合、前者と後者の違いは何で判断するのでしょうか?
お手数ですがお教え下さい。

A 回答 (4件)

分からない用語が出てきたら、まず検索してみましょう。


"unsigned int"、"signed int"で検索すれば、コレに対する説明はたくさんヒットします。

unsigned intは「符号なしint」で、いわゆるマイナスの値をとらない数値形式です。
signed intはその逆で「符号ありint」です。
両者の細かな説明はWebで調べるか、Cの本を読むといいと思います。
コンピュータの内部で負の値がどのように表現されてるかの勉強にもなります。
    • good
    • 0
この回答へのお礼

度々ありがとうございました!!
一度調べて確認しておきます。
ご教授ありがとうございました。

お礼日時:2006/11/02 10:44

readメソッドは、読み込んだ1byteのデータをunsigned intに変換し、それをさらにsigned intに変換して返します。


なのでreadメソッドはファイルの終端以外で負の値を返しません。
符号付の-1はビット列で表すと0xFFです。(これは分かりますよね?)
0xFFをunsigned intに変換すると255です。
なので、-1という値のデータはreadメソッドでは255が返ってきます。

この回答への補足

回答ありがとうございます!!
0xFFという表現方法は大丈夫なのですが、unsigned intとsigned intとはなんでしょうか。
たびたびすいません。。。

補足日時:2006/10/30 18:23
    • good
    • 0

FileOutputStreamにはreadメソッドはありませんよ。



1byteずつ読み込むので
-1
とファイルに書いてあった場合にreadメソッドで読み込むには、
「-」と「1」と2回読み込むことになります。
    • good
    • 0
この回答へのお礼

回答ありがとうございます。
FileInputStreamの間違いでした。。。。

お礼日時:2006/10/30 18:22

1byteの読み込みなので、ファイルから読み込まれた場合のデータは0x00~0xFF(0~255)までとなります。


データとしては-1は存在しません。
    • good
    • 0
この回答へのお礼

ありがとうございます!!
もう一度試してみます!!

お礼日時:2006/10/30 18:21

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!