当前位置:首页 > 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实现验证码

js实现验证码

实现验证码的JavaScript方法 生成随机验证码 使用Math.random()生成随机字符串,结合数字和字母: function generateCaptcha() { const cha…

js实现跳转

js实现跳转

使用 window.location 跳转 通过修改 window.location.href 实现页面跳转,这是最常用的方法。 window.location.href = 'https:/…

js实现分页

js实现分页

分页的基本实现思路 在JavaScript中实现分页功能通常需要结合前端和后端逻辑。前端负责渲染分页控件和处理用户交互,后端负责提供分页数据。 前端分页实现 纯前端分页适用于数据量较小的情况,可以直…

js实现打印

js实现打印

使用window.print()方法实现打印 在JavaScript中,可以通过调用window.print()方法直接触发浏览器的打印功能。这会打开系统的打印对话框,用户可以选择打印机和设置打印选项…

js实现日历

js实现日历

实现日历的基本思路 使用JavaScript实现日历的核心是动态生成日期表格,并处理月份切换逻辑。需要计算当前月的天数、起始星期几,并动态渲染到页面上。 获取当前日期信息 通过Date对象获取当前年…

js实现图片放大缩小

js实现图片放大缩小

实现图片放大缩小的基础方法 使用CSS的transform: scale()属性可以快速实现图片的放大缩小效果。通过JavaScript动态修改该属性值: const img = document.…