2012-12-23 11 views
8

私はここで説明するように、同じプロジェクトをやっている:Javaのbyte []配列から生のバイトの内容をstdoutに出力する方法は?

Wrap deflated data in gzip format

私の問題は、私はバイトをプリントアウトしようとすると、私は奇妙な結果を得ることです。私の問題は、(変数の私の悪い選択のため申し訳ありません)、次のコードで発生します。

​​

forループの最後の二つはそのバイト配列の内容を出力しません。したがって、gzipを使用すると予期しないファイルエラーの終了が発生します。奇妙なことは、2番目のfor-loopブロック(変数mとiiを持つブロック)をコメントアウトすると、何も出力されないということです。

バイト配列の内容を正しく印刷するにはどうすればよいですか? 2番目のfor-loopがコメントされていないときに最初のfor-loopが正しく出力され、2番目のfor-loopがコメントされていると何も印刷されないのはなぜですか?

EDIT:

は、具体的には:

私は生のバイトを書きたいです。

System.out.println(Arrays.toString(buf)); 

編集:それは右であるように、あなたのバイト配列を仮定すると、私のバイト配列

+0

System.out.writeを使用する場合は、コードの最後に '\ n'文字を書き込むことによって出力ストリームをフラッシュする必要があります。 – codebox

答えて

34

の一人一人のためにお互いが bufが呼び出された後、私はそれをしたい それはあなたのもののように聞こえます本当にやりたいのは、あなたのバイトをstdoutに書き出し、それを出力しないことです。ストリームへの出力と書き込みの違いについては、http://docs.oracle.com/javase/6/docs/api/java/io/PrintStream.htmlを参照してください。私が思う

System.out.write(buf); 
+3

@BhavikAmbani:バイトは数字で、コンソールに数値を表示できない理由はわかりません。それが上記のことです。 –

+0

しかし、私は生のバイトを印刷したい – XCBaller

+0

ありがとう。私はあなたが提案した直前にPrintStreamを訪れました。それは私が欲しいやり方で印刷します。私はまた、奇妙な振る舞いを引き起こしていたコードのどこかにバグを発見しました。再度、感謝します。 – XCBaller

-1
/* There is an image/ic_launcher in the drawable folder for which I am making ByteArray */ 



    Bitmap bmp = BitmapFactory.decodeResource(getResources(), R.drawable.img); 
    ByteArrayOutputStream stream = new ByteArrayOutputStream(); 
    bmp.compress(Bitmap.CompressFormat.PNG, 100, stream); 
    byte[] mByteArray = stream.toByteArray(); 

/*ここで私は16進形式で生データをいない示しています*/

System.out.println(Arrays.toString(mByteArray)); 

:最も簡単な方法は、書き込み(バイト[] b)のメソッドを呼び出すようにする必要がありますこれはあなたの人を助ける!

関連する問題