JS Base 64 编码解码

JS Base 64 编码解码

JS Base 64 编码解码

在网络传输中,经常会涉及到对数据进行 Base 64 编码和解码操作。Base 64 是一种用于将二进制数据转换成 ASCII 字符串的编码方式,它常用于在URL、cookie、网页传输等场景中。在JavaScript中,我们可以使用内置的方法来进行 Base 64 编码和解码操作。

Base 64 编码算法

Base 64 编码是一种将二进制数据转换为文本数据的编码方式,它将每三个字节转换成四个可打印字符。Base 64 编码表如下:

A-Z a-z 0-9 + /

具体的编码过程如下:

  1. 将输入数据按照3个字节一组进行划分
  2. 将每组3个字节转换为4个6位的数字
  3. 将这些数字按照 Base 64 编码表进行转换为可打印字符

Base 64 编码

在JavaScript中,我们可以使用btoa方法来进行 Base 64 编码操作。btoa方法接受一个字符串作为参数,并返回经过 Base 64 编码后的结果。

let data = "Hello, World!";
let base64Encoded = btoa(data);

console.log(base64Encoded);

运行以上代码,输出为:

SGVsbG8sIFdvcmxkIQ==

Base 64 解码

在JavaScript中,我们可以使用atob方法来进行 Base 64 解码操作。atob方法接受一个 Base 64 编码后的字符串作为参数,并返回解码后的原始数据。

let base64Encoded = "SGVsbG8sIFdvcmxkIQ==";
let originalData = atob(base64Encoded);

console.log(originalData);

运行以上代码,输出为:

Hello, World!

使用 ArrayBuffer 编码解码

除了直接对字符串进行 Base 64 编码解码外,我们还可以使用 ArrayBuffer 来进行更细粒度的操作。

Base 64 编码

function base64ArrayBuffer(arrayBuffer) {
    let binary = '';
    let bytes = new Uint8Array(arrayBuffer);

    for (let i = 0; i < bytes.byteLength; i++) {
        binary += String.fromCharCode(bytes[i]);
    }

    return btoa(binary);
}

let data = new ArrayBuffer(5);
let view = new Uint8Array(data);
view[0] = 72; // H
view[1] = 101; // e
view[2] = 108; // l
view[3] = 108; // l
view[4] = 111; // o

let base64Encoded = base64ArrayBuffer(data);

console.log(base64Encoded);

输出为:

SGVsbG8=

Base 64 解码

function arrayBufferFromBase64(base64) {
    let binary = atob(base64);
    let bytes = new Uint8Array(binary.length);

    for (let i = 0; i < binary.length; i++) {
        bytes[i] = binary.charCodeAt(i);
    }

    return bytes.buffer;
}

let base64Encoded = "SGVsbG8=";
let decodedData = arrayBufferFromBase64(base64Encoded);
let view = new Uint8Array(decodedData);

for (let i = 0; i < view.length; i++) {
    console.log(view[i]); // 72 101 108 108 111
}

以上代码将输出解码后的 ArrayBuffer 中的内容。

总结

在JavaScript中,我们可以使用内置的方法对数据进行 Base 64 编码和解码操作。通过这些方法,我们可以方便地在网络传输和数据存储中使用 Base 64 编码来处理二进制数据。同时,我们还可以通过操作 ArrayBuffer 来进行更灵活和细粒度的 Base 64 编码解码操作。Base 64 编码是一个常用且实用的数据编码方式,在实际开发中有着广泛的应用场景。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程