日期:2014-05-17  浏览次数:20687 次

byte数组转成String再转成byte数组
是这样的,一个图片用流读出来成为byte数组,然后需要通过webService传输,需要转换成String传输。获得后,再转为byte数组用输出流转为图片。

我是这样做的
都到数组byte[] bt;(用流把读出来都得byte)
String [] str=new String[4];
str[0]="1";
str[1]="2";
str[2]=bt.toString();
str[3]="4";
result=call.invoke(str); (这个是WebService的方法,传一个Object数组。我传的是String数组。)


接收到后
byte[] bt=str.getBytes();
再把byte数组用输出流生成图片。可是生成的图片都是空白。

------解决方案--------------------
byte[]转成String的时候,请用BASE64来转码,否则会因为字符转换问题(不是所有的byte组合都能映射为char),导致内容丢失。

反之也用BASE64来重新得到byte[]。

可以用Apache的Commons包,里面提供了BASE64工具类。

------解决方案--------------------
二进制数据要转成字符串来传输是需要经过编码(例如BASE64)处理才可以的;

1.在发送端用BASE64Encoder将二进制数据编码成字符串后再发送;
byte[] bt = <bt是读取到的图片的二制数据>;
String temp = new sun.misc.BASE64Encoder().encodeBuffer(bt);

2.在接收端用BASE64Decoder对接收到的字符串解码成二进制数据;再输出生成图片;
byte[] bt = new sun.misc.BASE64Decoder().decodeBuffer(temp);

BASE64编码参见: http://baike.baidu.com/view/1485202.htm