2017-07-12 21 views
0

ASCIIに変換して印刷する必要がある16進文字列があります。デバッグ中に正しい値が表示されますが、ASCIIを印刷しようとすると無視されて次の行に移動します。印字不可能な文字をドット(。)で置き換える方法はありますか?ここに私の抜粋です。交換の印刷可能でない文字をJavaのフルストップとして印刷

import javax.xml.bind.DatatypeConverter; 
byte[] out = toByteArray("0000005401F40000D9E3C60500000000002000000000000000D7C8F10000000000000000000000004040404040404040D9E3C600E9C7C9F0F0F0F1F1E5D9C1D1C1D54040F0F0F14BF0F0F14BF0F0F14BF0F0F100"); // Input Hex String 
System.out.println("ASCII: " + out); // Prints [[email protected] 
String hex = toHexString(out); 
System.out.println("Hex: " + hex); // Prints the hex - 00000054 exactly 

public static String toHexString(byte[] array) { 
    return DatatypeConverter.printHexBinary(array); 
} 

public static byte[] toByteArray(String s) { 
    return DatatypeConverter.parseHexBinary(s); 
} 
+1

のSystem.out.println( "ASCII:" +配列。 toString(out)); – Frank

答えて

1
import java.util.Arrays; 

import javax.xml.bind.DatatypeConverter; 
public class Main { 

    public Main() { 
     // TODO Auto-generated constructor stub 
    } 

    public static void main(String[] args) { 

     byte[] out = toByteArray("0000005401F40000D9E3C60500000000002000000000000000D7C8F10000000000000000000000004040404040404040D9E3C600E9C7C9F0F0F0F1F1E5D9C1D1C1D54040F0F0F14BF0F0F14BF0F0F14BF0F0F100"); // Input Hex String 
     System.out.println("ASCII: " + Arrays.toString(out)); 
     String hex = toHexString(out); 
     System.out.println("Hex: " + hex); // Prints the hex - 00000054 exactly 


    } 
    public static String toHexString(byte[] array) { 
     return DatatypeConverter.printHexBinary(array); 
    } 

    public static byte[] toByteArray(String s) { 
     return DatatypeConverter.parseHexBinary(s); 
    } 

} 

出力

enter image description here

例:

//non-ASCII 
String yourstring = Arrays.toString(out).replaceAll("[^\\x00-\\x7F]", "."); 


    //non-printable characters 
String yourstring = Arrays.toString(out).replaceAll("\\p{C}", "."); 
+0

この問題を解決しましたが、主な問題は、印刷できない文字を「ドット」に置き換える必要があるということです。 – JackSlayer94

+0

これを行うには、正規表現が必要です** replaceall ** string method – Frank

+0

回答が編集されました – Frank