我没有中文啊,为什么也乱码
原字符
42 "SmallBeer" 3 5 1 3 2 6 1 1 0 2 130 1 40 1 2 0 0 0 20 60 |
到程序里面是
String s = "42 \"SmallBeer\" 3 5 1 3 2 6 1 1 0 2 130 1 40 1 2 0 0 0 20 60 | \r\n";
byte[] _b = s.getBytes("US-ASCII");
byte[] _bn = s.getBytes();
byte[] _bu = s.getBytes("UTF-8");
System.out.println(_b.toString());
Arrays.asList(_b).forEach(
b->{System.out.print(b+" ");});
System.out.println();
System.out.println(_bn.toString());
Arrays.asList(_bn).forEach(
b->{System.out.print(b+" ");});
System.out.println();
System.out.println(_bu.toString());
Arrays.asList(_bu).forEach(
b->{System.out.print(b+" ");});
结果output
[B@74b0dfcd
[B@74b0dfcd
[B@32a87423
[B@32a87423
[B@20220e64
[B@20220e64
怎么完全不一样。
啊!啊!!啊!!!
首先那不算是乱码,只是地址
打印数组 不是有
Arrays.toString()
么另外你调用
Arrays.asList(_b)
实际得到的是byte[][]
Arrays
有个方法是stream
但是不支持byte[]
, 所以老老实实for
循环吧另外:
commons-lang3
包有个ArrayUtils.toObject()
能把基本类型数组转成对应的包装类数组, 这样Arrays.stream()
就能用了