首页 小组 问答 话题 好文 素材 用户 唠叨 我的社区

[代码]Uint8Array转Base64前端JavaScript

不爱phpLv.1普通用户
2024-09-08 12:55:44
0
45
function Uint8ArrayToBase64(array) {
    array = new Uint8Array(array);
    var length = array.byteLength;
    var tableStr =
      "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
    var table = tableStr.split("");
    var base64Str = "";
    for (var i = 0; length - i >= 3; i += 3) {
      var num1 = array[i];
      var num2 = array[i + 1];
      var num3 = array[i + 2];
      base64Str +=
        table[num1 >>> 2] +
        table[((num1 & 0b11) << 4) | (num2 >>> 4)] +
        table[((num2 & 0b1111) << 2) | (num3 >>> 6)] +
        table[num3 & 0b111111];
    }
    var lastByte = length - i;
    if (lastByte === 1) {
      var lastNum1 = array[i];
      base64Str += table[lastNum1 >>> 2] + table[(lastNum1 & 0b11) << 4] + "==";
    } else if (lastByte === 2) {
      var lastNum1 = array[i];
      var lastNum2 = array[i + 1];
      base64Str +=
        table[lastNum1 >>> 2] +
        table[((lastNum1 & 0b11) << 4) | (lastNum2 >>> 4)] +
        table[(lastNum2 & 0b1111) << 2] +
        "=";
    }
    return base64Str;
  }

浏览器btoa方式

function Uint8ArrayToBase64(array) {
    array = new Uint8Array(array);
    return window.btoa(array.toString().split(",").map(function(x){return String.fromCharCode(x);}).join(""))
}
不爱php
不爱php

44 天前

签名 : 智者不入爱河   45       0
评论
站长交流