导航

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

侧边栏
热门文章
1博文
梦回2024年的那个夏天——everlasting flowers钢琴音乐会「Rassembler」
热度
637
2博文
如何使用Docker一键部署猛男自用的维基萌博客lite版
热度
416
3推文
页面切换更流畅的维基萌博客系统0.24.2版本发布啦! 为了减少路由跳转导致时的页面抖动,增加了一些过渡动画当作缓冲。 但是因为nuxt3自带的页面切换动画会导致接口被多次调用,于是只能自己手搓了一个,缺点就是动画的时间不能很长,不过目前看着效果还行。 另外有大佬希望能显示当前博客系统的版本,就增加了版本显示,可以在管理后台首页以及博客底部看到。同时为了照顾不想在博客端显示版本号的用户增加了博客端是否显示版本号的选项。 具体更新内容请见:https://github.com/eeg1412/wikimoeNodeJSBlog/releases/tag/v0.24.2
热度
364
4博文
《孤独摇滚》圣地巡礼——下北泽&下北泽咖喱节2023
热度
273
5页面
友链
热度
208
6博文
探访《蜡笔小新》老家——春日部游记
热度
169
7博文
【RPG Maker MV】 解谜游戏常用的输入文字并进行比较以及变量操作方法$gameVariables
热度
130
8页面
活动
热度
78
9推文
今天去看了首部初音未来的电影《剧场版 世界计划 破碎的世界与无法歌唱的未来》。 说是初音未来的电影,但其实是手游《世界计划》的剧场版。好像有挺多人看到是初音未来的电影就去看了,结果发现并不全是😅。其实在宣传海报中,初音未来后面的那些人才是主角。 不过,我也是那些没玩过手游的观众之一。其实整场看下来问题也不是很大,就是对于人物关系和世界观的设定可能会有些问题。电影其实也很贴心地在剧情开头,大致以剧情的形式展示了手游中的五个团体的人物及其性格,但感觉还是有些杯水车薪,约等于看个眼熟。 此次的电影是第一次购买应援场。所谓的应援场,就是能在电影院里像是听演唱会一样挥舞荧光棒和尽情呐喊。看着前排那些粉丝看到自己喜欢角色时的呐喊,以及演唱会环节的打CALL,应援场确实是很有意思的一种电影观看方式呢! 剧情方面,属于看了开头大概能猜到整部动画的剧情走向。不过,通过演唱会的气氛渲染,甚至还感受到了一丝丝的感动。 总体来说,对于手游的粉丝来说可能是嘉年华般的狂喜,对于没接触过手游的路人来说也能一定程度融入其中,属于一部不错的粉丝向电影(不管是手游粉丝还是初音未来粉丝)。 首周电影特典是CD和游戏内的兑换码。送CD这种形式还第一次遇到,官方大气!
热度
65
10推文
看完《孤独摇滚》的总集篇剧场版后篇了。 虽然删减在所难免,但是个人觉得制作组还是在尽量在保留精华。 ED歌曲《Re:Re:》把我惊艳到了,非常熟悉的旋律当时硬是想不起来,回到家查了一下原来第一次听到是在《只有我不在的街道》。 https://www.bilibili.com/video/BV1M5ejeMErR
热度
65
最新评论
广树管理员
2025-02-02 10:52
@Xia:今天新发布了一版,可以更新试试,另外由于更换了变量名需要重新设置一下邮件设置。
Xia
2025-02-01 21:13
@广树:豪~٩(ˊᗜˋ*)و劳烦大大了
广树管理员
2025-02-01 21:02
@Xia:嗯,看到官方的有一篇回复里提到。这个模式仅针对465端口,587端口需要关闭。我之后加到提示里。
Xia
2025-02-01 21:00
@广树:发件成功了??? Σ(っ °Д °;)っ 关闭SSL就能使用587端口了
广树管理员
2025-02-01 20:57
@Xia:试一下将SSL关闭后,使用587端口呢?
正在攻略

logo_kai.jpg


PSN奖杯卡

PSN奖杯卡

赞助商广告

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

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

在浏览器中我们可以使用如下代码将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