Base64

基本介绍

base64是一种编码方式,并不是加密,它总共的字符集合包括64个可打印字符(a-z、A-Z、0-9、+、/)加一个=,任何一段二进制字节流都可以被这65个字符编码。
标准base64索引表如下:

索引

对应字符

索引

对应字符

索引

对应字符

索引

对应字符

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

工作方式

将数据按不同编码格式(如utf-8)转换成二进制字节流,然后按每6个二进制位为一组,分成若干组,如果流的总位数不是6的倍数,则最后一组低位补0。之后每6位组成一个新的字节,高位补00,按分组顺序重新组成一个流,最后根据base64索引表中的值找到对应的字符替换。

这样的话,如果字符串长度刚好为3的倍数,则恰好能转成 4的倍数字节的base64格式。
但是,如果字符串长度不是3的倍数,则转换的base64格式也不是4的倍数字节,则需要保证转换后的字节数为4的倍数,所以需要在转换后的字符后面补上"=",使其长度为4的倍数。

示例

例如现在有一个字符串"hello,world",转成二进制流如下表,共88个比特。

字符

二进制位

字符

二进制位

h

01101000

w

01110111

e

01100101

o

01101111

l

01101100

r

01110010

l

01101100

l

01101100

o

01101111

d

01100100

,

00101100

按6位一组分组,高位补00,且最后一组低位也补00,这一步得出结果为15个字节,之后再用"="补齐使字符串长度为4的倍数字节,得到新的序列如下为aGVsbG8sd29ybGQ=,长度为16字节,如下表所示:

二进制位

字符

二进制位

字符

00011010

a

00011101

d

00000110

G

00110110

2

00010101

V

00111101

9

00101100

s

00110010

y

00011011

b

00011011

b

00000110

G

00000110

G

00111100

8

00010000

Q

00101100

s

=

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值