2012-03-29 7 views
1

ich habe:java Ausgang hex (ByteArrayOutputStream)

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

und wenn System.out.println(outputStream) diese druckt .. ich sehe 0►☻☺♣▬♂test some und ich möchte dies wie 30 04 12 54 33

in HEX sehen Wie kann ich das tun?

Dank

konnte ich die binären zu einer Datei wie folgt schreiben:

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

Blick hier: http://stackoverflow.com/a/2149927/986169 – giorashc

+0

für meinen Fall ist es eine Lösung? nur für dieses Beispiel .. ich bin nicht so gut in diesem so ...: | – pufos

+0

Ich schreibe die Binärdatei in eine Datei wie 'outputStream.writeTo (Dateiname)' wo die Datei ist Datei Datei = neue Datei ("out.bin"); FileOutputStream Dateiname = new FileOutputStream (Datei); ' – pufos

Antwort

0

Obwohl die System.out.println() Methode kann verschiedene Dinge auszudrucken, ist es hauptsächlich zum Drucken von Zeichenfolgen. Zu diesem Zweck wird versucht, die Eingabe in eine Zeichenkette gemäß der Plattform oder einer explizit gegebenen Zeichencodierung umzuwandeln. Um rohe Bytes als Hexadezimalzahl zu drucken, müssen Sie vor dem Ausdruck einige Manipulationen vornehmen. Das folgende Beispiel könnte für Sie nützlich sein.

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(); 
    } 
} 

Die getHex Methode ist von http://www.rgagnon.com/javadetails/java-0596.html

+0

das ist nicht gut ... ich brauche binär zu hex nur – pufos

+0

pufos, was meinst du mit binär zu hex? ByteArrayOutputStream zu hexen? Ändern Sie zuerst ByteArrayOutputStream in Byte-Array, bevor Sie die obige Methode verwenden. – dragon66

+0

Es enthält auch Text – pufos

Verwandte Themen