导航

萌即是正义!时不时分享一些ACG活动记录与有趣代码的小站!

侧边栏
热门文章
1博文
360度带你《我们仍未知道那天所看见的花的名字》秩父圣地巡礼
热度
182
2推文
周末在饭能进行圣地巡礼时,偶然发现了一家对动漫爱好者超级友好的咖啡厅。 店长因为喜欢《登山少女/向山进发》这部作品,特地移居到饭能并开设了这家咖啡厅。最初店内的装饰并不多,如今之所以这么丰富,是因为这几年不断有动漫爱好者们带来各种装饰物,才让咖啡厅变成了现在看到的样子。 如果有机会来日本饭能,一定不要错过这家咖啡厅——Stage Champ。 咖啡厅地址:https://maps.app.goo.gl/zvQA9eJFRfSxs7PH6 注意:这家咖啡厅仅在周末营业哦。
热度
156
3页面
友链
热度
130
4博文
吃动画中的巨无霸汉堡:《时光流逝,饭菜依旧美味》圣地巡礼之Soul Grill
热度
104
5推文
2025年2月9日,今天去看了3D CG动画电影《伊人制造(MAKE A GIRL)》。 整部动画的画面非常不错,非常好的运用了3D动画的运镜优势,提供了非常不错的动态体验效果。音乐方面也很出色,能给人留下深刻的印象。 剧情方面老实说真的好想剧透啊!但是忍住了。剧情节奏也是属于那种前期缓慢后面突然开始坐上火箭一般开始疯狂冲刺,但是一旦适应了这趟火箭又会感觉有些带感?剧情走向则有点迷,永远猜不透接下来的发展。另外很多设定需要观众自行去接受。所以如果放弃了对剧情的推敲,接受了设定,那么恭喜你,电波对上了,这部作品将是一部良作。这要是没对上,可能结束时的感想就会是“啊??我看了个啥?”。
热度
91
6博文
博客通用版Live2d伊斯特瓦尔发布
热度
78
7博文
emlog插件版之给博客加上能陪聊的Live2d版伊斯特瓦尔【ver1.04】
热度
78
8博文
时隔六年的再次巡礼:《前进吧!登山少女/向山进发》圣地巡礼 饭能篇 2025
热度
65
9页面
程序员老黄历&求签
热度
65
10博文
3DS模拟器简体中文字库 | Citra3ds字库 | 符文工房4乱码解决字库 | shared_font.bin
热度
65
最新评论
广树管理员
2025-06-14 21:17
@阿卡林:对 我最近也有耳闻温州开了东方的咖啡,哪年回国去看看
阿卡林
2025-06-14 21:15
@Mimosa:雾雨咖啡店吧,最近温州也开了个车万风格的咖啡店 车万凉了这话听了好多年了,怎么感觉现在慢慢好起来了,连车万咖啡店都有了🤔
Temp Mail
2025-06-14 00:28
这篇文章勾起了我那该死的回忆,致敬曾经看哭的动漫
广树管理员
2025-06-13 22:18
@Zrzzz:🫡能治愈到大佬倍感荣幸
Zrzzz
2025-06-13 22:17
@广树:被这篇更新治愈到了🥺
攻略中
符文工房龙之天地
暂无评分
Steam符文工房龙之天地
2025年6月10日 20时 ~ 攻略中
已累计游玩4天
体验奇幻冒险与日常生活的 RPG《符文工房》系列最新作。 玩家可以在日常生活中种田、钓鱼和复兴村庄,也可以在冒险的过程中邂逅各种各样的角色。打造属于自己的“村庄”,享受全新的冒险与生活吧!
fault - StP - LIGHTKRAVTE
暂无评分
Steamfault - StP - LIGHTKRAVTE
2025年5月29日 20时 ~ 攻略中
已累计游玩2周2天
全球累计销量超过50万份的“fault”系列最新作!故事的舞台是一个融合了奇幻与科幻的超前世界——卢森海德王国。本作讲述了生活在此地的一个平凡又平庸的究极普通市民——名为果子的少年的故事。
PSN奖杯卡

PSN奖杯卡

归档
赞助商广告

base64转二进制数组(ArrayBuffer) Javascript | 微信小程序

作者:广树时间:2018-03-19 14:58:19分类:JavaScript

在浏览器中我们可以使用如下代码将base64转换层二进制数组。


function _base64ToArrayBuffer(base64) {
    var binary_string =  window.atob(base64);
    var len = binary_string.length;
    var bytes = new Uint8Array( len );
    for (var i = 0; i < len; i++)        {
        bytes[i] = binary_string.charCodeAt(i);
    }
    return bytes.buffer;
}


如果是小程序中等没有window对象的话就不行了。

虽然小程序提供wx.base64ToArrayBuffer(base64),但是不知道为什么返回就是空。所以用如下代码来转换。


var Base64Binary = {
  _keyStr : "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",
  
  /* will return a  Uint8Array type */
  decodeArrayBuffer: function(input) {
    var bytes = (input.length/4) * 3;
    var ab = new ArrayBuffer(bytes);
    this.decode(input, ab);
    
    return ab;
  },

  removePaddingChars: function(input){
    var lkey = this._keyStr.indexOf(input.charAt(input.length - 1));
    if(lkey == 64){
      return input.substring(0,input.length - 1);
    }
    return input;
  },

  decode: function (input, arrayBuffer) {
    //get last chars to see if are valid
    input = this.removePaddingChars(input);
    input = this.removePaddingChars(input);

    var bytes = parseInt((input.length / 4) * 3, 10);
    
    var uarray;
    var chr1, chr2, chr3;
    var enc1, enc2, enc3, enc4;
    var i = 0;
    var j = 0;
    
    if (arrayBuffer)
      uarray = new Uint8Array(arrayBuffer);
    else
      uarray = new Uint8Array(bytes);
    
    input = input.replace(/[^A-Za-z0-9\+\/\=]/g, "");
    
    for (i=0; i<bytes; i+=3) {  
      //get the 3 octects in 4 ascii chars
      enc1 = this._keyStr.indexOf(input.charAt(j++));
      enc2 = this._keyStr.indexOf(input.charAt(j++));
      enc3 = this._keyStr.indexOf(input.charAt(j++));
      enc4 = this._keyStr.indexOf(input.charAt(j++));
  
      chr1 = (enc1 << 2) | (enc2 >> 4);
      chr2 = ((enc2 & 15) << 4) | (enc3 >> 2);
      chr3 = ((enc3 & 3) << 6) | enc4;
  
      uarray[i] = chr1;      
      if (enc3 != 64) uarray[i+1] = chr2;
      if (enc4 != 64) uarray[i+2] = chr3;
    }
  
    return uarray;  
  }

var uintArray = Base64Binary.decode(base64_string);  
var byteArray = Base64Binary.decodeArrayBuffer(base64_string); 


donate.png

1210 x 50(蓝底).png

cloudcone