如何手动实现基础的base64编码?

26 min read

好的,下面是一个JavaScript实现的base64编码方法:

function base64Encode(str) {
  let base64 = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";
  let result = "";
  let i = 0;
  while (i < str.length) {
    let chr1 = str.charCodeAt(i++);
    let chr2 = str.charCodeAt(i++);
    let chr3 = str.charCodeAt(i++);

    let enc1 = chr1 >> 2;
    let enc2 = ((chr1 & 3) << 4) | (chr2 >> 4);
    let enc3 = ((chr2 & 15) << 2) | (chr3 >> 6);
    let enc4 = chr3 & 63;

    if (isNaN(chr2)) {
      enc3 = enc4 = 64;
    } else if (isNaN(chr3)) {
      enc4 = 64;
    }

    result += base64.charAt(enc1) + base64.charAt(enc2) + base64.charAt(enc3) + base64.charAt(enc4);
  }

  return result;
}

调用方法如下:

let encodedString = base64Encode("Hello, world!");
console.log(encodedString); // "SGVsbG8sIHdvcmxkIQ=="

当然,这只是一个简单的实现,并不用于生产环境。