base64的相关操作
可以参考的文档base64中文参考文档
base64加解密
// base64解密byte数组
func DecodeToByte(data []byte) ([]byte, error) {
enc := base64.StdEncoding
dbuf := make([]byte, enc.DecodedLen(len(data)))
n, err := enc.Decode(dbuf, data)
return dbuf[:n], err
}// base64解密字符串
func DecodeToString(data []byte) (string, error) {
enc := base64.StdEncoding
dbuf := make([]byte, enc.DecodedLen(len(data)))
n, err := enc.Decode(dbuf, data)
return string(dbuf[:n]), err
}// 加密为byte数组
func EncodeToByte(src []byte) []byte {
enc := base64.StdEncoding
buf := make([]byte, enc.EncodedLen(len(src)))
enc.Encode(buf, src)
return buf
}// base64加密为字符串
func EncodeToString(data []byte) (string) {
return base64.StdEncoding.EncodeToString(data)
}
文件处理
base对文件的处理其实就是对文件的加解密处理,然后再使用相应的文件读写操作。
根据base64字符串计算图片大小
【base64的相关操作】Base64编码要求把3个8位字节(38=24)转化为4个6位的字节(46=24),之后在6位的前面补两个0,形成8位一个字节的形式。 如果剩下的字符不足3个字节,则用0填充,输出字符使用’=’,因此编码后输出的文本末尾可能会出现1或2个’=’(相当于多了一个或两个字节)
ff, _ := ioutil.ReadFile("image/19155559_E3nk.jpg")//我还是喜欢用这个快速读文件
fmt.Println("编码前图片大小=====",len(ff))
buf_store:=EncodeToByte( ff)// 文件转base64
_ = ioutil.WriteFile("image/output2.jpg.txt", buf_store, 0666) //直接写入到文件就ok完活了。
fmt.Println("编码后base64大小=====",len(buf_store))
count:=strings.Count(string(buf_store), "=")
noeq:=string(buf_store)[0:strings.Index(string(buf_store), "=")]
fmt.Println("去掉等号后的大小=====",len(noeq))
fmt.Println("两者相除=====",float32(len(noeq))/float32(len(ff)))
fmt.Println("base64求得原图片大小=====",int(float32(len(buf_store))*3/4)-count)
推荐阅读
- 热闹中的孤独
- JAVA(抽象类与接口的区别&重载与重写&内存泄漏)
- 放屁有这三个特征的,请注意啦!这说明你的身体毒素太多
- 一个人的旅行,三亚
- 布丽吉特,人生绝对的赢家
- 慢慢的美丽
- 尽力
- 一个小故事,我的思考。
- 家乡的那条小河
- 《真与假的困惑》???|《真与假的困惑》??? ——致良知是一种伟大的力量