[英]Print non-printable characters as fullstop in Java
我有一個十六進制字符串,需要將其轉換為ASCII並進行打印。 在調試時,我可以看到正確的值,但是當我嘗試打印ASCII時,它將忽略它並移至下一個。 有沒有一種方法可以將所有不可打印的字符替換為dot(。)。 這是我的片段:
import javax.xml.bind.DatatypeConverter;
byte[] out = toByteArray("0000005401F40000D9E3C60500000000002000000000000000D7C8F10000000000000000000000004040404040404040D9E3C600E9C7C9F0F0F0F1F1E5D9C1D1C1D54040F0F0F14BF0F0F14BF0F0F14BF0F0F100"); // Input Hex String
System.out.println("ASCII: " + out); // Prints [B@15db9742
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);
}
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);
}
}
產量
替換示例:
//non-ASCII
String yourstring = Arrays.toString(out).replaceAll("[^\\x00-\\x7F]", ".");
//non-printable characters
String yourstring = Arrays.toString(out).replaceAll("\\p{C}", ".");
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.