我正在使用隐式String构造函数来处理字节数组..但结果很奇怪。我是否需要为正确的输出做更多的事情......?任何帮助将不胜感激。这是我的代码..
byte[] arr = { 23, 34, 20, 65, 88, 95 };
String s1 = new String(arr);
System.out.println("First: "+s1);
String s2 = new String(arr, 1, 3);
System.out.println("Second: "+s2);
打印:
首先:?“?AX _
第二:?AX
答案 0 :(得分:2)
您正在使用的String()
构造函数是根据Java环境的默认字符集解释数组中的字节。这可能有所不同。
如果您要使用特定字符编码,例如“US-ASCII”或“UTF-8”,则应使用其他构造函数指定字符集,例如:String(byte[] bytes, String charsetName)。
答案 1 :(得分:1)
这是对的。这些是您提供的代码的字符。如果将字节数组更改为此字符,则会看到字符a-f:
byte[] arr = { 97, 98, 99, 100, 101, 102 };