为什么要使用base64编码,有哪些情景需求?

https://www.cnblogs.com/straybirds/p/8395041.html

Base64编码原理与应用

Java实现BASE64编解码

公钥证书也好,电子邮件数据也好,经常要用到Base64编码,那么为什么要作一下这样的编码呢?

我们知道在计算机中任何数据都是按ascii码存储的,而ascii码的128~255之间的值是不可见字符。
而在网络上交换数据时,比如说从A地传到B地,往往要经过多个路由设备,
由于不同的设备对字符的处理方式有一些不同,这样那些不可见字符就有可能被处理错误,这是不利于传输的。
所以就先把数据先做一个Base64编码,统统变成可见字符,这样出错的可能性就大降低了。

使用场景:

对证书来说,特别是根证书,一般都是作Base64编码的,因为它要在网上被许多人下载。

电子邮件的附件一般也作Base64编码的,因为一个附件数据往往是有不可见字符的。

比如http协议当中的key value字段的值,必须进行URLEncode ,
因为一些特殊符号(等号或者空格)是有特殊含义的,造成混淆,解析失败,那么需要把这些值统一处理为可见字符,传输完再解析回来。
xml格式的文件中如果想嵌入另一个xml文件。直接嵌入,那么各种标签(有两套xml标签)就混乱了,不容易被解析。怎么办?
1,把另一个xml编译成字节数组转换成逗号隔开的字符串。
2,编译成可见字符。
结果:2好些。因为1消耗的空间比原来多一倍,而2只是多三分之一。
网页中一些小图片可以直接以base64编码的方式嵌入。不用再用链接请求消耗资源。
很多比较老的协议还是只支持纯文本的,比如SMTP协议。
有时在一些特殊应用的场合,大多数消息是纯文本的,偶尔需要用这条纯文本通道传一张图片之类的情况发生的时候,就会用到base64
http虽然也是纯文本协议,但是http有针对二进制数据做特殊的规定(mime),所以用http直接传输二进制数据是可行的。
但是有些特殊情况,比如返回需要在json内部之类的。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Base64 编码是一种将二进制数据编码成字符串的方法,常用于在网络上传输或存储数据。它使用64种字符来表示二进制数据,这些字符包括大写字母、小写字母、数字以及一些特殊字符。 与十六进制编码相比,Base64 编码的优势在于它可以表示任意二进制数据,而十六进制编码只能表示整数。此外,Base64 编码后的字符串也更短,因为它使用了更少的字符来表示二进制数据。 对于文本数据,Base64 编码后的字符串中只包含可打印字符,因此更容易阅读和处理。 另外,在不同的应用中,Base64 编码也有不同的用途。例如,在电子邮件中,它可用于在邮件正文和附件中传输二进制数据;在 HTTP 协议中,它可用于在请求和响应头中传输二进制数据。 ### 回答2: 十六进制字符串和Base64编码都是常用的数据表示方式,但它们有不同的应用场景和特点。 首先,十六进制字符串是一种用16个字符(0-9,A-F)表示二进制数据的表示方法。它简单直观,便于人类阅读和理解,适用于某些特定的应用场景,比如显示内存地址、计算机中的数据传输和调试等。然而,十六进制字符串的表示方式需要更多的字符来表达相同的二进制数据,使其相对于二进制数据来说冗余度较高。 相比之下,Base64编码则是一种将二进制数据转换成ASCII字符的编码方式。它使用64个字符(包括大小写字母、数字和一些特殊字符)来表示二进制数据,不仅可以节省存储空间,而且还可以在文本协议中传输二进制数据。Base64编码常见于电子邮件传输、URL参数传递、图片传输等场景。它可以解决文本和二进制之间的转换问题,提高数据在不同系统和环境中的兼容性与可传输性。 因此,虽然十六进制字符串和Base64编码都是表示二进制数据的方法,但它们有不同的应用场景和特点,具体选择哪种编码方式需要根据具体的需求使用环境来确定。 ### 回答3: 十六进制字符串和Base64编码是两种不同的编码方式,分别用于不同的场景。 首先,十六进制是一种用16个不同的字符来表示数字的方法,它包含了数字0-9和字母A-F,共16个字符。十六进制字符串主要应用于计算机领域,用于表示二进制数据,如内存地址、文件指纹等。由于它的表示方式较为简单直观,方便机器进行处理和计算,因此在计算机领域广泛使用。 而Base64编码是一种将二进制数据转换为可打印字符的编码方式。它使用64个字符(包括大小写字母、数字和两个特殊字符)来表示二进制数据,通过将每个6个比特位的二进制数据转换成相应的可打印字符来实现编码Base64编码主要用于数据传输、存储和表示,它可以将二进制数据转换成纯文本形式,以便在不支持二进制的系统中传输或保存数据。 为什么在某些情况下要将十六进制字符串转换为Base64编码呢?一方面,Base64编码后的数据长度相对较短,可以节省存储空间和传输带宽;另一方面,Base64编码后的数据只包含可打印字符,更适合在文本环境中使用,例如作为URL参数传递、存储在文本文件中等。因此,在需要将二进制数据以纯文本形式表示或传输时,可以选择使用Base64编码。 总而言之,十六进制字符串和Base64编码是两种编码方式,各有其适用的场景。根据实际需求选择合适的编码方式可以更好地满足数据处理和传输的要求。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值