j**a 里面的string 和byte[] 怎么互转?

时间:2013.08.18 发布人:dyh31518

j**a 里面的string 和byte[] 怎么互转?

已解决问题

谷歌dyh31518用户在2013.08.18提交了关于“兵临城下j**a 里面的string 和byte[] 怎么互转?”的提问,欢迎大家涌跃发表自己的观点。目前共有1个回答,最后更新于2024-08-09T20:36:55。希望大家能够帮助她。

详细问题描述及疑问:期待您的答案,我不知道说什么才好,除了谢谢 !

希望以下的回答,能够帮助你。

第1个回答

用户名:apjxw  

1.string转byte[]
byte[]midbytes=isoString.getBytes("UTF8");
//为UTF8编码
byte[]isoret=srt2.getBytes("ISO-8859-1");
//为ISO-8859-1编码
其中ISO-8859-1为单字节的编码
2.byte[]转string
StringisoString=newString(bytes,"ISO-8859-1");
Stringsrt2=newString(midbytes,"UTF-8");
说明:
在网络传输或其它应用中常常有同一的中间件,假设为String类型。因此需要把其它类型的**转换为中间件的类型。
将字符串进行网络传输时,如socket,需要将其在转换为byte[]类型。这中间如果采用用不同的编码可能会出现未成预料的问题,如乱码。
下面举个例子:
我们用soc已具级调田守于伤进都ket传输String类型的**时,常常用UTF-8进行编码,这样比较可以避免一个“中文乱续危实单叫新码”的问题。
发送端:
StringsendString="发笑龙价倍难责送**";
byte[]益牛sendBytes=s纪层束端endString.getBytes("UTF8")评跑架评孙;
.socket发
接受端:
StringrecString=newString(sendBytes,"UTF-8");

但是,这里往往又会出现这样一个问题。就是想要发送的数据本身就是byte[]类策字型的。
如果将其通过UTF-8编码转换为中间件String类型就会出现问题
如:
byte[]bytes=newbyte[]{50,0,-1,28,-24};
StringsendString=newStrin门反发约可g(bytes,"UTF-8");
byte[除然坏销]sendBytes=sendStri行亮纸蒸多社脸附义陆ng.getBytes("UTF8");
然后再发送
接受时进行逆向转换
StringrecString=newString(sendBytes,"UTF-8");
byte[]Mybytes=isoString.getByt镇es("UTF8");
这时Mybytes中的**植亚维伤速食银血氧革清将是[50,0,-17晶你标率身,-65,-67,28,-17,-65,-67]
因此,需要采用单字节的编武乱距方一万此东轻析码方式进行转换
S掉那即草攻述才材械农tringsendString=newString(bytes,"UTF-8");改为StringsendString=newString(bytes,"ISO-8859-1");
byte[]M方心了ybytes=isoString.getBytes("UTF8");改为byte[]Mybytes=isoString.getBytes("ISO-8859-1");
这样所需要的字节就有恢复了。