gpt4 book ai didi

java - 如何处理不可打印值的 "print"字节数组

转载 作者:行者123 更新时间:2023-11-30 06:11:04 24 4
gpt4 key购买 nike

我在这个论坛上看到了很多相关的问题和答案,但没有找到任何可以解决我的问题的内容。

这个想法很简单:

(这是使用 Java 编程语言 - 我目前仅限于使用 Java 7)

接收到一个字节数组(代表任何内容:某种有线格式、某种形式的编码数据、嵌入“文本”的二进制数据等)。我希望能够以以下形式打印数组:

  1. 作为十六进制字符串
  2. 作为“可打印”文本

第一种情况部分是出于调试原因,但也可能在非 Debug模式下使用。第二种情况纯粹是出于调试原因,并且允许与其他信息源进行人工比较。

我认为我对第一种情况有解决方案,但在第二种情况下遇到了困难。

显然,字节数组可能包含不可打印的字符或以不同方式呈现的字符。如何“打印”数组以便表示所有字节?我可以提供的一个很好的类比是 UNIX od 命令,其中 od -ah 以十六进制形式显示二进制数据以及 ASCII 字符。在这种情况下,点 (.) 通常用于代替不可打印或控制字符。

我不需要它看起来像od输出的那样,但希望能够显示数据,以便至少可以看到可打印的字符,其余的用某种占位符。另外,我不想删除不可打印的字符,因为这会产生误导性的数据表示。

如果有人知道如何实现这一目标,我将非常感激。

最佳答案

试试这个#2:

String original = new String(bytes);
String printable = original.replaceAll("\\P{Print}", ".")); //Or any other character instead of "." you want

它使用POSIX printable character class .

如果您需要 Unicode 支持,请使用 utf-8 字符集参数创建字符串,并使用 UNICODE_CHARACTER_CLASS 构造一个模式。标记并使用与上面相同的正则表达式。

关于java - 如何处理不可打印值的 "print"字节数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50220038/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com