Java 字节数组和字符串之间的转换
我有一个2D字节数组,如下所示:Java 字节数组和字符串之间的转换,java,Java,我有一个2D字节数组,如下所示: Byte [][] headerparts=new Byte[n+1][24]; for(i=0;i<n;i++){ finalshares[i]=headerparts[i].toString(); } for(i=0;i<n;i++){ System.out.println(finalshares[i].getBytes()); } 现在我还有一个字符串数组: String[] finalshares=new String[
Byte [][] headerparts=new Byte[n+1][24];
for(i=0;i<n;i++){
finalshares[i]=headerparts[i].toString();
}
for(i=0;i<n;i++){
System.out.println(finalshares[i].getBytes());
}
现在我还有一个字符串数组:
String[] finalshares=new String[n];
我需要将字节数组转换为字符串数组。所以我做了如下操作:
Byte [][] headerparts=new Byte[n+1][24];
for(i=0;i<n;i++){
finalshares[i]=headerparts[i].toString();
}
for(i=0;i<n;i++){
System.out.println(finalshares[i].getBytes());
}
那么,为什么将字符串[]转换为字节后的最终答案与此不同呢
最后的答案是:
[B@17bd6a1
[B@147ee05
[B@15b9e68
[B@1fcf0ce
[B@1256ea2
使用字节数组而不是字节数组 字节数组到字符串数组:
for(i=0;i<n;i++){
finalshares[i]=new String(headerparts[i]);
}
对于(i=0;i您可以通过将字节数组作为参数传递给字符串构造函数,将字节数组转换为字符串对象。请尝试这样做(为此,您需要使用byte[],而不是它的包装类byte[])
如果您知道所传递字节的性质(无论您是否使用ASCII、UTF-8等)
您使用的toString()方法将返回字节数组转换的默认实现。headerparts是一个2d bytearray。那么finalshares[i]=新字符串(headerparts[i])是否正确?它给出的错误有点像这样:没有为String(java.lang.byte[])构造函数java.lang String.String找到合适的构造函数(int,int,char[])不适用(实际参数和形式参数列表长度不同)构造函数java.lang.String.String(java.lang.StringBuilder)不适用(实际参数java.lang.Byte[]无法通过方法调用转换转换为java.lang.StringBuilder)构造函数java.lang.String.String(java.lang.StringBuffer)不适用将字节[]更改为字节[]为什么初始最终共享2d数组和将字符串数组转换为字节后的最终数组都不同?它们不应该相同吗?是的,我将其转换为字节[][]。可以。我的第二个问题呢?你得到了这个-getBytes()方法返回以字节为单位的字符串对象。您看到它与原始对象不同的原因是您错误地使用了toString()方法。
new String(byte[] bytes, Charset charset)