base64 的四种编码方式

事情的起因是这样的:

在做 siber 项目的时候,有接口使用 []byte 类型数据接收文件流。

 // proto 定义
 bytes file_data = 1;

但是 siber 是统一使用 json 格式进行的 request body 定义,不能直接传输。

一个通用的解决方案是将 []byte 转化为 base64 进行传输。我们选用这个包:

"encoding/base64"

这个包下面带有不同的 base64 编码格式:

  • StdEncoding:常规编码
  • URLEncoding:URL safe 编码
  • RawStdEncoding:常规编码,末尾不补 =
  • RawURLEncoding:URL safe 编码,末尾不补 =

跟常规编码相比, URL safe替换掉字符串中的特殊字符,+/

[]byte("Hello world. 你好,世界!") 为例:

base64.StdEncoding.EncodeToString(msg)
// SGVsbG8gd29ybGQuIOS9oOWlve+8jOS4lueVjO+8gQ==

base64.RawStdEncoding.EncodeToString(msg)
// SGVsbG8gd29ybGQuIOS9oOWlve+8jOS4lueVjO+8gQ

base64.URLEncoding.EncodeToString(msg)
// SGVsbG8gd29ybGQuIOS9oOWlve-8jOS4lueVjO-8gQ==

base64.RawURLEncoding.EncodeToString(msg)
// SGVsbG8gd29ybGQuIOS9oOWlve-8jOS4lueVjO-8gQ

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 前言:前面学习总结了平时开发中遇见的各种数据加密方式,最终都会对加密后的二进制数据进行Base64编码,起到一种二...
    博格体阅读 1,340评论 0 1
  • 背景介绍 base64的作用是以可见字符的形式对非纯文本文件进行编码转换, 简而言之就是用可见字符集中的字符替换原...
    markict阅读 1,181评论 0 0
  • 简述 Base64常用于在通常处理文本数据的场合,表示、传输、存储一些二进制数据。 Base64编码提供以下几种f...
    sylviaMo阅读 882评论 0 0
  • # 简介 Base64是一种用64个字符来表示任意二进制数据的方法。是一种编码方法,有自己的编码表,所以称为Bas...
    Tenloy阅读 4,328评论 0 4
  • 1.什么是BASE64编码 BASE64就是一种基于64个可打印字符来表示二进制数据的方法。换句话说,就是将二进制...
    p_in_phd阅读 779评论 0 1

友情链接更多精彩内容