我有一个2D字节数组,如下所示:
Byte [][] headerparts=new Byte[n+1][24];
现在我也有一个String数组:
String[] finalshares=new String[n];
我需要将Byte数组转换为字符串数组。所以我确实喜欢这样:
for(i=0;i<n;i++){
finalshares[i]=headerparts[i].toString();
}
这是正确的方法吗?
此外如何将此String数组转换回2D Byte数组。请帮助。
字符串是否适合Bytearray像这样:
for(i=0;i<n;i++){
System.out.println(finalshares[i].getBytes());
}
编辑:我根据下面提供的答案进行了转换:
问题是最初我的2D [] [] Byte数组是:
1 5 3 116 69 75 99 54 0 0 0 106 115 71 69 108 49 122 0 0 0 44 40
2 5 3 116 0 0 0 54 105 97 0 106 115 71 0 0 0 122 86 0 0 44 40
3 5 0 0 69 75 0 54 0 97 53 106 0 0 69 108 0 122 0 0 0 44 0
4 0 3 0 69 0 99 0 105 97 53 0 115 0 69 0 49 0 86 0 0 0 40
5 0 0 116 0 75 99 0 105 0 53 0 0 71 0 108 49 0 86 0 0 0 0
那么为什么将String [] []转换为Bytes后的最终答案与此不一样。?
最终答案是:
[B@17bd6a1
[B@147ee05
[B@15b9e68
[B@1fcf0ce
[B@1256ea2
答案 0 :(得分:2)
使用字节数组而不是字节数组
字节数组到字符串数组:
for(i=0;i<n;i++){
finalshares[i]=new String(headerparts[i]);
}
Bytearray的字符串:
for(i=0;i<n;i++){
headerparts[i] = finalshares[i].getBytes();
}
答案 1 :(得分:0)
您可以将字节数组作为参数传递给String构造函数,从而将字节数组转换为String对象。尝试这样做(为此你需要使用byte []而不是它的包装类Byte []),
for(i=0;i<n;i++){
finalshares[i]=new String(headerparts[i]); // Java converts it to a string representation
}
您也可以使用构造函数:
new String(byte[] bytes, Charset charset)
如果您知道传递的字节的性质(无论您使用的是ASCII,UTF-8等)。
您使用的toString()方法将返回字节数组转换的默认实现。