我在这个论坛上看到了很多相关的问题和答案,但没有找到任何可以解决我的问题的内容。
这个想法很简单:
(这是使用 Java 编程语言 - 我目前仅限于使用 Java 7)
接收到一个字节数组(代表任何内容:某种有线格式、某种形式的编码数据、嵌入“文本”的二进制数据等)。我希望能够以以下形式打印数组:
- 作为十六进制字符串
- 作为“可打印”文本
第一种情况部分是出于调试原因,但也可能在非调试模式下使用。第二种情况纯粹是出于调试原因,并且允许与其他信息源进行人工比较。
我认为我对第一种情况有解决方案,但我正在努力解决第二种情况。
显然,字节数组可能包含不可打印的字符或以不同方式呈现的字符。如何“打印”数组以便表示所有字节?我可以提供的一个很好的类比是 UNIXod
命令,在哪里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 可打印字符类.
如果您需要 Unicode 支持,请使用 utf-8 字符集参数创建字符串,并使用UNICODE_CHARACTER_CLASS标记并使用与上面相同的正则表达式。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)