返回顶部
首页 > 资讯 > 精选 >Base64编码中为什么会有等号
  • 556
分享到

Base64编码中为什么会有等号

2023-07-05 09:07:49 556人浏览 泡泡鱼
摘要

这篇文章主要介绍了Base64编码中为什么会有等号的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Base64编码中为什么会有等号文章都会有所收获,下面我们一起来看看吧。Base64编码中为什么会有等号(=)如果

这篇文章主要介绍了Base64编码中为什么会有等号的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Base64编码中为什么会有等号文章都会有所收获,下面我们一起来看看吧。

Base64编码中为什么会有等号(=)

如果对字符串"ab"进行Base64编码,得到的结果将是:YWI=,结果中为什么会出现=呢,这就需要了解一下base64编码背后的原理。

Base64是一种便于网络传输的字节码编码方式,之所以叫Base64是由于它的编码结果是由64个可打印字符组成,这些字符在不同系统间是通用的。

64个字符如下表所示

索引

对应字符

索引

对应字符

索引

对应字符

索引

对应字符

0

A

17

R

34

i

51

z

1

B

18

S

35

j

52

0

2

C

19

T

36

k

53

1

3

D

20

U

37

l

54

2

4

E

21

V

38

m

55

3

5

F

22

W

39

n

56

4

6

G

23

X

40

o

57

5

7

H

24

Y

41

p

58

6

8

I

25

Z

42

q

59

7

9

J

26

a

43

r

60

8

10

K

27

b

44

s

61

9

11

L

28

c

45

t

62

+

12

M

29

d

46

u

63

/

13

N

30

e

47

v



14

O

31

f

48

w



15

P

32

g

49

x



16

Q

33

h

50

y



大家可以看到这里面并没 '=' 这个字符,这是因为 ’=‘ 其实是填充字符。

如果需要表示上面的64个字符,那么需要6bit,也就是2^6=64,base64的核心思想就是,将3个

字节拆分成4个6bit,然后对每个6bit的高位补2个0,构成1个字节。也即是每3个字节最终结果将变成4个字节。

如果原始字符串的字节数不是3的整数倍,那么就用0来填充,用来填充的0就被编码成了'=',这就是出现=的原因,并且只会出现在结果出,如果原始字符刚好是3字节的整数倍,那么就没有等号了。

回到开头的例子,我们看下ab是如何计算得到YWI=的。

  • ab对应的ascaii编码的二进制表示为:011000001 01100010

  • 由于只有两个字节,需要填充到3个字段,也就是:011000001 01100010 00000000

  • 拆分成四个6bit:011000 010110 001000 000000

  • 高位补两个0,变成四字节:00011000 00010110 00001000 00000000

  • 按照上表的对应关系:24-Y 22-W 8-I 填充-=, 也即是YWI=。

需要注意填充的0是要被转化成=,而不是上表中的A。

顺便附上golang示例代码

func main() {    str := "ab"    // base64编码    encodedStr := base64.URLEncoding.EncodeToString([]byte(str))    fmt.Println(encodedStr) // YWI=    // base64解码    decodeStr, _ := base64.URLEncoding.DecodeString(encodedStr)    fmt.Println(string(decodeStr)) // ab}

如果不希望保留填充的=,可以在编码后去掉,解码前填充上

示例代码如下:

func main(){    str := "ab"// base64编码encodedStr := base64.URLEncoding.EncodeToString([]byte(str))encodedStr = strings.TrimRight(encodedStr, "=") // 去掉填充的=fmt.Println(encodedStr) // YWI// 解码时,长度不是4的倍数,需要用=填充i := len(encodedStr) % 4if i != 0 {encodedStr += strings.Repeat("=", 4-i) }// base64解码decodeStr, _ := base64.URLEncoding.DecodeString(encodedStr)fmt.Println(string(decodeStr)) // ab}

关于“Base64编码中为什么会有等号”这篇文章的内容就介绍到这里,感谢各位的阅读!相信大家对“Base64编码中为什么会有等号”知识都有一定的了解,大家如果还想学习更多知识,欢迎关注编程网精选频道。

--结束END--

本文标题: Base64编码中为什么会有等号

本文链接: https://lsjlt.com/news/350856.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • Base64编码中为什么会有等号
    这篇文章主要介绍了Base64编码中为什么会有等号的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Base64编码中为什么会有等号文章都会有所收获,下面我们一起来看看吧。Base64编码中为什么会有等号(=)如果...
    99+
    2023-07-05
  • 解读Base64编码中为什么会有等号(=)问题
    目录Base64编码中为什么会有等号(=)64个字符如下表所示顺便附上golang示例代码总结Base64编码中为什么会有等号(=) 如果对字符串"ab"进行Ba...
    99+
    2023-03-06
    Base64编码 Base64编码等号 Base64编码=
  • java中Quoted-printable和Base64编码有什么区别
    Quoted-printable和Base64是两种常见的编码方式,用于将二进制数据转换为可打印字符的文本格式。 Quoted-...
    99+
    2023-10-24
    java
  • CSS中图片Base64编码是什么
    小编给大家分享一下CSS中图片Base64编码是什么,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!什么是 base64 编码  我不是来讲概念的,直接切入正题,图片的 base64 编码就是可以将一副图片数据编码成一串字符...
    99+
    2023-06-15
  • 在 PHP 中将图像编码为 Base64
    借助 PHP 中的多个内置函数,有很多方法可以将图像编码为 base64 格式。 这些函数包括: pathinfo file_get_contents base64_enc...
    99+
    2024-02-27
  • base64编码指的是什么
    这篇文章给大家分享的是有关base64编码指的是什么的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。base64编码是网络上最常见的用于传输8Bit字节码的编码方式之一,Base64就是一种基于64个可打印字符来表...
    99+
    2023-06-14
  • base64编码原理是什么
    这篇文章主要介绍“base64编码原理是什么”,在日常操作中,相信很多人在base64编码原理是什么问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”base64编码原理是什么”的疑惑有所帮助!接下来,请跟着小编...
    99+
    2023-07-05
  • JavaScript中的base64编码原理是什么
    今天小编给大家分享一下JavaScript中的base64编码原理是什么的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。bas...
    99+
    2023-07-05
  • Base64编码的原理是什么
    这篇文章主要讲解了“Base64编码的原理是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Base64编码的原理是什么”吧!Base64是一种基于64个可打印字符来表示二进制数据的表示方...
    99+
    2023-06-27
  • JavaScript中的Base64编码字符串是什么
    今天小编给大家分享一下JavaScript中的Base64编码字符串是什么的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。初步...
    99+
    2023-07-05
  • 为什么两个nil值有时候会不相等?
    ...
    99+
    2024-04-02
  • PHP5.2怎么将图片转换为Base64编码
    这篇文章主要讲解了“PHP5.2怎么将图片转换为Base64编码”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“PHP5.2怎么将图片转换为Base64编码”吧!在开发网页时,我们经常需要嵌入...
    99+
    2023-07-06
  • Java中怎么将base64编码字符串转换为图片
    本篇内容介绍了“Java中怎么将base64编码字符串转换为图片”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!将base64编码字符串转换为...
    99+
    2023-07-05
  • Java中将base64编码字符串转换为图片的代码
    前一段时间,在做摄像头拍照上传,摄像头拍的照片为base64编码格式的字符串,需要上传至项目中,则需要使用到将base64编码字符串转换为图片 1、将base64编码字符串转换为图片...
    99+
    2023-03-19
    Java base64编码字符串转换为图片 Java base64转换图片 Java base64编码转换
  • Java中的base64编码器怎么实现
    本篇内容主要讲解“Java中的base64编码器怎么实现”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Java中的base64编码器怎么实现”吧!简介什么是Base64编码呢?在回答这个问题之前...
    99+
    2023-06-29
  • php用header设置了utf8编码为什么还会乱码
    在PHP中,使用`header()`函数设置编码为utf-8只是告诉浏览器将响应的内容按照utf-8编码进行解析。然而,如果你的网页...
    99+
    2023-08-18
    PHP
  • JavaScript中三等号和双等号的区别是什么
    这篇文章给大家分享的是有关JavaScript中三等号和双等号的区别是什么的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。三等号和双等号的区别// 双等号 - 将两个操作数转换为相同类...
    99+
    2023-06-27
  • 为什么亚马逊账号会关联
    亚马逊账号关联是指将多个亚马逊账号绑定在一起,以便在这些账号之间共享某些信息和功能。这种关联可以使用户更方便地管理他们的亚马逊账户,例如在不同的亚马逊网站上购物时只需使用一个账号登录,或者在多个亚马逊网站上共享购物车和收藏夹等信息。 亚马...
    99+
    2023-10-26
    亚马逊 账号
  • JS 里为什么会有 this
    目录1、需求2、方案3、第一次改进4、加糖5、费解6、存在问题7、对象与函数1、需求 假设我们有一个对象 var person = { name: 'Frank', ...
    99+
    2024-04-02
  • 为什么会有xss攻击
    XSS出现的原因是在HTML中常用到字符实体,将常用到的字符实体没有进行转译,导致完整的标签出现,在可输入文本框等某些区域内输入特定的某些标签可导致代码被恶意篡改,XSS常见漏洞出现的地方有:数据交互的地方:-get post cookie...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作