2017-01-27 5 views
0

レコードのコレクションから文字列と整数の両方を処理しようとしています。各レコードには、各パラメーターごとにさまざまな列があります。私は、データストリームから各情報を処理します。整数によるファイル処理

stream.readFully(keyPad); 
key = new String(keyPad); 

と今key = "Af3w"

Key  Time  Seconds 
Af3w  50:34  480 

私のような文字列を処理:

ストリームのようなさまざまな値が含まれています。 (keyPadは、読み込みが必要なバイト数を補うための変数です)。

しかし、整数として秒を処理しようとすると、私は奇妙な値を取得します。

seconds = stream.readInt() 

秒は、しかし、私はそれを文字列として処理し、私は480を得るintとしてそれを解析する際、876097545代わりの480に等しくなってしまいます。しかし、これは単純な解決策ですが、整数はの範囲から3の文字から8までですので、intとして処理する必要があります。

なぜ私はストリームから整数を読み込むのですか。私は480の代わりに876097545の値を取得します。

+0

作業するコードがあれば誰かが実際にそれに答えるかもしれません。 [MCVE](http://stackoverflow.com/help/mcve)を提供してください。そうでなければ、この質問はあなたとあなたの誰もがこれを読む時間を無駄にすること以外は何もありませんでした。 – Paul

+0

私の謝罪、私は私のコード全体を投稿し、誰かが私のためにそれを修正するように思わせるようにしたくありません。私はちょうどなぜ値 "480"が "876097545"としてjavaのデータストリームからintとして読み込まれるときに処理されるのか、文字列として処理されるときには "480"として処理されることを知りたいだけです。 – IWantToLearn

+0

これは素晴らしいジェスチャーですが、ここでは正確には役に立ちません。たくさんの理由があるかもしれません。例えば、 'stream'が何であるか、それがどのように初期化されているのかわかりません。誤っていくつかの値などを読んでいる可能性があります。コードを投稿して、知りたいことをできるだけ明確に指摘してください。そうでなければ、盲目の推測以外は何もできません。 – Paul

答えて

0

"480"は整数ではなく文字としてストリームに保存されているようです。 整数を読み取ると、0x343830nnが取り込まれます。 Javaの整数の場合は8バイト。 nn = 00の場合、整数は876097536なので、ストリームの次のバイトは0x09で、876097545が返ってくると推測しています。

関連する問題