为了账号安全,请及时绑定邮箱和手机立即绑定

java按字节拆分字符串 后在拼成字符串

java按字节拆分字符串 后在拼成字符串

森栏 2019-04-07 09:38:31
是这样的一个方法publicstaticString[]splitByByteSize(Stringcontent,intsize){byte[]bytes=content.getBytes();inttotalSize=bytes.length;intpartNum=0;if(totalSize==0){returnnewString[0];}if(totalSize%size==0){partNum=totalSize/size;}else{partNum=totalSize/size+1;}String[]arr=newString[partNum];intarrIndex=-1;for(inti=0;i
查看完整描述

2 回答

?
杨__羊羊

TA贡献1943条经验 获得超7个赞

首先,将string转换成byte流的时候,一定要指定编码(content.getBytes(utf-8)),否则在传输的时候,很有可能就是个杯具;
其次,arr[arrIndex]+=((char)bytes[i])这个代码,在Java里面可以通过+=运算符将string和char相加?
同上代码,对于双字节编码(例如中文),bytes[i]可能会是一个负数,强制转型成char,由于char的取值范围是0〜(2^16)-1,故此时会转换成一个正值,这样拆分后必然出现乱码,而且这个转换不一定是可逆的,此时再也无法由char恢复byte了,所以拆分后自然无法恢复。
解决办法:如果是要跨JVM传输,建议直接传输byte数组,然后重组;如果不跨JVM传输,可先重组成string,然后传输,不过不是特殊需要,还是建议传输byte数组,最终在接收端重组。在这个过程中,有一点切记:转换过程中务必指定编码。这是我们项目组血的教训,后来重申的重要原则之一。
byte[]array=content.getBytes("utf-8");//发送端
Stringcontent=newString(array,"utf-8");//接收端
                            
查看完整回答
反对 回复 2019-04-07
  • 2 回答
  • 0 关注
  • 697 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号