【发布时间】:2017-01-13 17:55:58
【问题描述】:
我正在查看一个捕获文本文件,它显示了从 ASCII 中的十六进制值获得的符号。在 Notepad++ 中,它还显示了来自 00 to 1F 的符号,它们被 this webpage 很好地映射出来,您可以找到完整的 ASCII 表,包括带有十六进制和十进制数字 here 的扩展值。我知道它们是控制字符,但有什么方法可以在 java 中显示它们?
我可以让所有其他 ASCII 符号显示在我的 java 程序中,但不能显示带有 STX NUL EOT SOH 等符号的符号,这些符号来自 0 to 31 的十进制值和 00 to 1F 的十六进制值.
这是来自here 的 ASCII 表的快照
这是我用来打印的代码。
FileInputStream fis = new FileInputStream(filePath);
int length = (int) new File(filePath).length();
byte[] buffer = new byte[length];
fis.read(buffer, 0, length);
for (int i = 1; i < hex.length(); i++){
if(i %2 == 0){
String test = String.valueOf(hex.charAt(i-2))+ String.valueOf(hex.charAt(i-1));
System.out.println("Hex: "+test+" hexadecimal: "+Integer.parseInt(test, 16)+" char: "+(char) Integer.parseInt(test, 16));
}
}
任何帮助将不胜感激!
【问题讨论】:
-
什么是
hex?它没有在您提供的(不完整的)代码中声明。看来您正在将字节转换为十六进制数字字符串,然后将它们解析回整数值;据我所知,这种往返过程没有任何理由。
标签: java byte ascii symbols pcap