java - 在 Java 中将不可打印字符打印为句号

标签 java hex ascii

我有一个十六进制字符串需要转换为 ASCII 并打印。在调试时,我可以看到正确的值,但是当我尝试打印 ASCII 时,它会忽略它并移至下一个。有没有办法可以将所有不可打印的字符替换为点(.)。这是我的片段:

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

}

输出

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}", ".");

关于java - 在 Java 中将不可打印字符打印为句号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45053825/

相关文章:

java - Java 类是如何加载的,我如何确定加载类的位置/时间/原因?

Javascript 插入奇怪的换行符

delphi - 如何使用Delphi读取文本文件中的最后一行

java - 如何使用内存分析器工具查找重复的库和版本冲突的类

java - 如何制作我自己的自定义容器 - 没有默认构造函数

java - 字符串二进制到十六进制 Java

C 将 emacs 中的十六进制值转换为不正确的值

Java: "[B@1ef9157"背后的语法和含义?二进制/地址?

java - 如何用Java绘制ASCII楼梯?

Java Melody 与非 Web 应用程序的集成