Base64编码中为什么会有等号
更新时间:2024-01-01Base64编码的简介
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的倍数。等号只出现在编码字符串的末尾,并且等号的数量最多只能有两个。