在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 問答/Java  Android/ 圖片字節(jié)數(shù)組為什么必須進(jìn)行Base64編碼才能傳輸?

圖片字節(jié)數(shù)組為什么必須進(jìn)行Base64編碼才能傳輸?

服務(wù)器端得到了圖片對應(yīng)的字節(jié)數(shù)組,要通過http協(xié)議傳輸?shù)絘ndroid客戶端,用new String()傳入圖片的字節(jié)數(shù)組,然后傳到客戶端,然后客戶端通過String.getBytes()方法得到字節(jié)數(shù)組進(jìn)行解析以后得不到圖片,必須通過Base64編碼,然后客戶端進(jìn)行Base64解碼才行,為什么?

回答
編輯回答
維她命
http(s)協(xié)議本身是不適合用來直接傳輸二進(jìn)制數(shù)據(jù)的,這是協(xié)議本身造成的。

因此,必須將數(shù)據(jù)轉(zhuǎn)化成可見的連續(xù)的內(nèi)容,而Base64正好能做到這點(diǎn)。

傳送門:扒一扒HTTP的構(gòu)成

2018年8月7日 17:20
編輯回答
朽鹿

http協(xié)議可以傳輸二進(jìn)制數(shù)據(jù)(瀏覽器里面的圖片、視頻、音頻都是二進(jìn)制數(shù)據(jù)),問題是傳輸?shù)臅r候必須保證字節(jié)不會改變。你直接將圖片的字節(jié)轉(zhuǎn)化為一個字符串一般是不行的,除非使用的字符集在0~255之間全部有對應(yīng)的字符,否則就會導(dǎo)致某些字節(jié)轉(zhuǎn)換錯誤,那么客戶端所收到的就不再是原來的那些字節(jié)了。

base64之所以可以,是因為編碼之后的字符都落在ASCII區(qū)間,而ASCII是所有字符編碼都會支持的,因此可以正確傳輸和還原。

2017年6月24日 03:47