c语言编程笔录

首页 >   > 笔记大全

笔记大全

Base64编码中为什么会有等号

更新时间:2024-01-01

Base64编码的简介

Base64编码是一种将二进制数据转换成ASCII字符的编码方式。Base64编码是由64个字符组成,分别是A~Z、a~z、0~9、+和/。使用Base64编码时,将原始数据每三个字节一组(3*8=24),转换成四个字符一组(4*6=24),之后在最后不足三个字节的情况下后面补充等号。

//使用JavaScript中的Base64编码解码示例
let base64Str = btoa("Hello, World!");    //编码字符串
console.log(base64Str);    //"SGVsbG8sIFdvcmxkIQ=="
let originalStr = atob(base64Str);    //解码字符串
console.log(originalStr);    //"Hello, World!"

等号的意义

Base64编码中的等号就是用来填充编码字符串的,以保证编码后的字符串长度为4的倍数。当原始数据的字节数不足三个字节时,会在最后添加一个等号;当原始数据的字节数不足两个字节时,会在最后添加两个等号。

//使用Java中的Base64编码解码示例
import java.util.Base64;

public class Base64Demo {
    public static void main(String[] args) {
        String str = "Hello, World!";
        byte[] bytes = str.getBytes();
        
        //编码字节数组
        Base64.Encoder encoder = Base64.getEncoder();
        byte[] encodedBytes = encoder.encode(bytes);
        String encodedStr = new String(encodedBytes);
        System.out.println(encodedStr);    //"SGVsbG8sIFdvcmxkIQ=="
        
        //解码字节数组
        Base64.Decoder decoder = Base64.getDecoder();
        byte[] decodedBytes = decoder.decode(encodedBytes);
        String decodedStr = new String(decodedBytes);
        System.out.println(decodedStr);    //"Hello, World!"
    }
}

等号的位置

Base64编码字符串中的等号位置是有一定规律的。等号只出现在编码字符串的末尾,并且等号的数量最多只能有两个。如果等号的数量为1,则该等号出现在编码字符串的最后一个字符的后面;如果等号的数量为2,则这两个等号紧跟在最后一个字符后面。

#使用Python中的Base64编码解码示例
import base64

str = "Hello, World!"
bytes = str.encode("utf-8")

#编码字节数组
encodedBytes = base64.b64encode(bytes)
encodedStr = encodedBytes.decode("utf-8")
print(encodedStr)    #"SGVsbG8sIFdvcmxkIQ=="

#解码字节数组
decodedBytes = base64.b64decode(encodedBytes)
decodedStr = decodedBytes.decode("utf-8")
print(decodedStr)    #"Hello, World!"

总结

Base64编码是一种将二进制数据转换成ASCII字符的编码方式,使用64个字符将原始数据每三个字节一组转换成四个字符一组。等号是用来填充编码字符串的,以保证编码后的字符串长度为4的倍数。等号只出现在编码字符串的末尾,并且等号的数量最多只能有两个。