展开全部
int len = content.length(); 这句不对的。content.length()返回的字符长度62616964757a686964616fe58685e5aeb931333337613132而不是字节长度。
对于非单字节编码而言content.length()长度永远小于content.getBytes().length,只有对单字节字符而言这两个长度才相等。
另外分数组处理实在不是好办法,即需要书写更长的代码,运行效率也低于用流方式处理的。
一下是我写的两种方式的处理代码 你能明显的比较出来。流只用一个循环,而字节数组至少要一个双循环。String s="实现dhl反对思考浪费你的身份了你看打发士大夫士大夫似的";
//数组方式
byte[] bs=s.getBytes();
int length=5,len=bs.length/length,len1;
byte[] tmp=new byte[length];
for(int i=0;i
for(int j=0;j
tmp[j]=bs[i*length+j];
System.out.println(Arrays.toString(tmp));
}
tmp=new byte[length];
if((len1=bs.length%length)>0){
for(int i=0;i
tmp[i]=bs[len*length+i];
System.out.println(Arrays.toString(tmp));
}
//流方式
InputStream is=new ByteArrayInputStream(s.getBytes());
int length2=5,len2;
byte[] bs2=new byte[length2];
try {
while((len2=is.read(bs2))>0){
if(len2!=length2)
Arrays.fill(bs2, len2, 5, (byte)0);
System.out.println(Arrays.toString(bs2));
}
} catch (IOException e) {
e.printStackTrace();
}