2012-03-29 11 views
1

Javaの出力進(ByteArrayOutputStream)

ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); 
encoder.encode(question, outputStream); 

System.out.println(outputStream)版画この..私は0►☻☺♣▬♂test someを見て、私は30 04 12 54 33

は、私はそれをどのように行うことができますようにHEXでこれを見たいですか?私はこのようなファイルにバイナリを書くことができました

おかげ

File file = new File("out.bin"); 
FileOutputStream filename = new FileOutputStream(file); 
outputStream.writeTo(filename); 
+0

見てからです。私の場合のためにhttp://stackoverflow.com/a/2149927/986169 – giorashc

+0

解決策はありますか?ただこの例のために..私はこれほど良くはありません...:| – pufos

+0

'outputStream.writeTo(filename)'のようなファイルにバイナリを書きます。ここでfileは 'File file = new File(" out.bin ")です。 FileOutputStreamファイル名=新しいFileOutputStream(ファイル); ' – pufos

答えて

0

System.out.println()の方法は、異なるものを印刷することができますが、主に印刷文字列です。この目的のために、入力をプラットフォームまたは明示的に指定された文字エンコーディングに従って文字列に変換しようとします。 rawバイトを16進数で表示するには、印刷する前にいくつかの操作が必要です。次の例は、あなたにとって有用かもしれません。

import java.io.*; 

class PrintHex 
{ 
    public static void main(String[] args) 
    { 
     byte[] raw = {0x30,0x04,0x12,0x54,0x33}; 
     byte[] raw1 = {'G','I','F'}; 
     ByteArrayOutputStream bo = new ByteArrayOutputStream(); 
     ByteArrayOutputStream bo1 = new ByteArrayOutputStream(); 
     bo.write(raw,0,raw.length); 
     bo1.write(raw1,0,raw1.length); 

     System.out.println(bo); 
     System.out.println(bo1); 

     System.out.println("0x" + getHex(raw)); 
     System.out.println("0x" + getHex(raw1)); 
    } 
    static final String HEXES = "ABCDEF"; 

    public static String getHex(byte [] raw) { 
     if (raw == null) { 
      return null; 
     } 
     final StringBuilder hex = new StringBuilder(2 * raw.length); 
     for (final byte b : raw) { 
      hex.append(HEXES.charAt((b & 0xF0) >> 4)) 
     .append(HEXES.charAt((b & 0x0F))); 
     } 
     return hex.toString(); 
    } 
} 

getHex方法はこちらhttp://www.rgagnon.com/javadetails/java-0596.html

+0

これは良いことではありません...私は16進数のみにバイナリを必要とします – pufos

+0

pufos、何をバイナリに16進数で意味するのですか? ByteArrayOutputStreamを16進数に変換しますか?上記のメソッドを使用するよりも、ByteArrayOutputStreamをバイト配列に変更してください。 – dragon66

+0

また、 – pufos