js实现base 64
Base64 编码与解码的实现
在 JavaScript 中,可以通过内置的 btoa 和 atob 函数实现 Base64 的编码和解码。以下是具体的使用方法:
编码字符串为 Base64
使用 btoa 函数将普通字符串编码为 Base64 格式:
const originalString = 'Hello, World!';
const encodedString = btoa(originalString);
console.log(encodedString); // 输出: SGVsbG8sIFdvcmxkIQ==
解码 Base64 为字符串
使用 atob 函数将 Base64 字符串解码为原始字符串:
const encodedString = 'SGVsbG8sIFdvcmxkIQ==';
const decodedString = atob(encodedString);
console.log(decodedString); // 输出: Hello, World!
处理 Unicode 字符
btoa 和 atob 仅支持 ASCII 字符,对于 Unicode 字符(如中文),需要先进行 URI 编码:
const unicodeString = '你好,世界!';
const encoded = btoa(encodeURIComponent(unicodeString));
console.log(encoded); // 输出: JUU0JUJEJUEwJUU1JUE1JUJEJUVGJUJDJThDJUU0JUI4JTk2JUU3JTk1JThDJUVGJUJDJTgx
const decoded = decodeURIComponent(atob(encoded));
console.log(decoded); // 输出: 你好,世界!
二进制数据(如 ArrayBuffer)的 Base64 转换
对于二进制数据,可以通过 Uint8Array 和 String.fromCharCode 实现转换:
function arrayBufferToBase64(buffer) {
let binary = '';
const bytes = new Uint8Array(buffer);
for (let i = 0; i < bytes.byteLength; i++) {
binary += String.fromCharCode(bytes[i]);
}
return btoa(binary);
}
function base64ToArrayBuffer(base64) {
const binaryString = atob(base64);
const bytes = new Uint8Array(binaryString.length);
for (let i = 0; i < binaryString.length; i++) {
bytes[i] = binaryString.charCodeAt(i);
}
return bytes.buffer;
}
// 示例
const buffer = new Uint8Array([72, 101, 108, 108, 111]).buffer;
const base64 = arrayBufferToBase64(buffer);
console.log(base64); // 输出: SGVsbG8=
const decodedBuffer = base64ToArrayBuffer(base64);
console.log(new Uint8Array(decodedBuffer)); // 输出: Uint8Array [72, 101, 108, 108, 111]
Node.js 环境中的实现
在 Node.js 中,可以使用 Buffer 实现 Base64 转换:

// 编码
const originalString = 'Hello, World!';
const encodedString = Buffer.from(originalString).toString('base64');
console.log(encodedString); // 输出: SGVsbG8sIFdvcmxkIQ==
// 解码
const decodedString = Buffer.from(encodedString, 'base64').toString();
console.log(decodedString); // 输出: Hello, World!
通过这些方法,可以轻松实现 JavaScript 中的 Base64 编码与解码功能。






