发布网友 发布时间:2022-04-30 02:02
共1个回答
热心网友 时间:2022-04-19 07:33
先说说base64吧:对于图片来说,一个字节占八位,如果都换成byte[]的话,会很长,不便于传输,那么就把没6个字节来对应一个新的字符(如010011是19,对应base64编码的T),,所以这个目的主要是精简数据,便于传输;追答好吧,其实,之所以用base64传图片,就是为了加密,包括我们的一些东西也用base64;
“还有就是base64默认都是每6个字节一转换的吗?”
这个问题:你想过为什么叫base64,而不是base88之类的吗?你先想 如果一个六位的二进制,总共能表达多少个数呢,很明显是2的6次方,是64对吧。当时设计的时候的思想就是:有一串很长的0011这样的数,那我得想办法把它编码成一定的格式,那么就按照每6个二进制来对应一个数(这个规则是人定的,他就规定010011对应T;当然你也可以把每四个二进制数对应一个编码,那么这个编码表就由你来定,你可以让0100对应S,也可以对应t,那就形成了你的Base16编码了),按照这个思想编完之后,就可以传输了,那么接受完之后就可以按照同样的规则进行解码了。
你会说:既然能解码,那这个东西还能叫加密吗?其实我个人的理解,这个不叫加密,应该叫转码更贴切一定,最常见的作用是:稍微一转码,你用肉眼就看不出来了,比如我的一个下载地址,用这个转码,就是一堆乱七八糟的东西,反正你不解码(针对广大用户),你是不知道我的内容的。还有就是http传参数,如果你的表中有个隐藏的字段想传给服务器,那么你构造字段的时候肯定不想让用户或者其他人看到吧,好吧,那就转码啊,这样他就不知道你发送的什么了(当然你也可以不转码,用明文传输,如?name=zhangsan)
够清楚了吧