服务器端得到了图片对应的字节数组,要通过http协议传输到android客户端,用new String()传入图片的字节数组,然后传到客户端,然后客户端通过String.getBytes()方法得到字节数组进行解析以后得不到图片,必须通过Base64编码,然后客户端进行Base64解码才行,为什么?
服务器端得到了图片对应的字节数组,要通过http协议传输到android客户端,用new String()传入图片的字节数组,然后传到客户端,然后客户端通过String.getBytes()方法得到字节数组进行解析以后得不到图片,必须通过Base64编码,然后客户端进行Base64解码才行,为什么?
15 回答8.4k 阅读
8 回答6.2k 阅读
1 回答4k 阅读✓ 已解决
3 回答6k 阅读
3 回答2.2k 阅读✓ 已解决
2 回答3.1k 阅读
2 回答3.8k 阅读
http协议可以传输二进制数据(浏览器里面的图片、视频、音频都是二进制数据),问题是传输的时候必须保证字节不会改变。你直接将图片的字节转化为一个字符串一般是不行的,除非使用的字符集在0~255之间全部有对应的字符,否则就会导致某些字节转换错误,那么客户端所收到的就不再是原来的那些字节了。
base64之所以可以,是因为编码之后的字符都落在ASCII区间,而ASCII是所有字符编码都会支持的,因此可以正确传输和还原。