当前位置:首页 > JavaScript

btoa js实现

2026-02-02 10:52:38JavaScript

btoa 方法的 JavaScript 实现

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

btoa js实现

基本语法

let encodedData = btoa(stringToEncode);

参数说明

  • stringToEncode:需要编码的二进制字符串(每个字符的 Unicode 值必须在 0 到 255 之间)。

返回值

返回一个 Base64 编码的字符串。

btoa js实现

示例代码

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');

标签: btoajs
分享给朋友:

相关文章

js实现vue路由

js实现vue路由

Vue路由基础实现 使用Vue Router实现前端路由需要先安装并配置路由库。Vue Router是Vue.js官方的路由管理器。 安装Vue Router: npm install vue-r…

js实现继承

js实现继承

原型链继承 通过将子类的原型指向父类的实例实现继承。子类实例可以访问父类原型上的属性和方法。 function Parent() { this.name = 'parent'; } Parent…

js 实现继承

js 实现继承

原型链继承 通过让子类的原型对象指向父类的实例来实现继承。子类实例可以访问父类原型上的属性和方法。 function Parent() { this.name = 'parent'; } Par…

js 实现链表

js 实现链表

链表的基本概念 链表是一种线性数据结构,由一系列节点组成,每个节点包含数据和指向下一个节点的指针。与数组不同,链表在内存中是非连续存储的,插入和删除操作效率较高。 链表的实现 在 JavaScrip…

js实现祖玛

js实现祖玛

实现祖玛游戏的核心思路 祖玛游戏的核心玩法是发射彩色珠子,形成三个或以上相同颜色的珠子即可消除。以下是使用JavaScript实现的基本框架。 游戏初始化 创建画布并初始化游戏状态: const…

js实现密码

js实现密码

密码强度验证 使用正则表达式验证密码强度是一种常见方法。以下代码检查密码是否包含大小写字母、数字和特殊字符,且长度至少为8位: function checkPasswordStrength(pass…