btoa js实现
btoa 方法的 JavaScript 实现
btoa 是 JavaScript 中的一个全局方法,用于将二进制字符串(通常是 ASCII 字符串)编码为 Base64 格式。以下是其基本用法和实现细节。

基本语法
let encodedData = btoa(stringToEncode);
参数说明
stringToEncode:需要编码的二进制字符串(每个字符的 Unicode 值必须在 0 到 255 之间)。
返回值
返回一个 Base64 编码的字符串。

示例代码
const originalString = 'Hello, World!';
const encodedString = btoa(originalString);
console.log(encodedString); // 输出: "SGVsbG8sIFdvcmxkIQ=="
处理非 ASCII 字符
如果字符串包含非 ASCII 字符(Unicode 值大于 255),直接使用 btoa 会抛出错误。需要先对字符串进行转义或编码:
function encodeUnicode(str) {
return btoa(encodeURIComponent(str).replace(/%([0-9A-F]{2})/g,
(match, p1) => String.fromCharCode('0x' + p1)));
}
const unicodeString = '你好,世界!';
const encodedUnicode = encodeUnicode(unicodeString);
console.log(encodedUnicode); // 输出 Base64 编码结果
手动实现 btoa
以下是一个手动实现 btoa 功能的函数:
function customBtoa(str) {
const chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=';
let output = '';
let i = 0;
while (i < str.length) {
const a = str.charCodeAt(i++);
const b = str.charCodeAt(i++);
const c = str.charCodeAt(i++);
const byte1 = a >> 2;
const byte2 = ((a & 3) << 4) | (b >> 4);
const byte3 = ((b & 15) << 2) | (c >> 6);
const byte4 = c & 63;
output += chars.charAt(byte1) + chars.charAt(byte2);
output += isNaN(b) ? '==' : isNaN(c) ? '=' : chars.charAt(byte3) + chars.charAt(byte4);
}
return output;
}
console.log(customBtoa('Hello')); // 输出: "SGVsbG8="
注意事项
btoa仅适用于二进制字符串,对 Unicode 字符串需要额外处理。- 编码后的字符串可能包含
+、/和=符号,用于填充或表示特殊字符。 - 在 Node.js 环境中,可以使用
Buffer实现类似功能:Buffer.from('Hello').toString('base64');






