微信小程序hex转整数

这里是引用

提示:使用Base64 编吗结果 : ‘AAAE2X==’


前言

提示:这里可以添加本文要记录的大概内容:

例如:写base64转码的时候遇到16进制转整数的问题 。


提示:以下是本篇文章正文内容,下面案例可供参考

一、base64转字节代码

  base64ToArrayBuffer:function(sBase64, nBlockSize) {
    var sB64Enc = sBase64.replace(/[^A-Za-z0-9\+\/]/g, ""), nInLen = sB64Enc.length,
      nOutLen = nBlockSize ? Math.ceil((nInLen * 3 + 1 >>> 2) / nBlockSize) * nBlockSize : nInLen * 3 + 1 >>> 2, aBytes = new Uint8Array(nOutLen);
    for (var nMod3, nMod4, nUint24 = 0, nOutIdx = 0, nInIdx = 0; nInIdx < nInLen; nInIdx++) {
      nMod4 = nInIdx & 3;
      nUint24 |= this.b64ToUint6(sB64Enc.charCodeAt(nInIdx)) << 18 - 6 * nMod4;
      if (nMod4 === 3 || nInLen - nInIdx === 1) {
        for (nMod3 = 0; nMod3 < 3 && nOutIdx < nOutLen; nMod3++, nOutIdx++) {
          aBytes[nOutIdx] = nUint24 >>> (16 >>> nMod3 & 24) & 255;
        }
        nUint24 = 0;
      }
    }
    return aBytes;
  },

#来自网页文章

二、使用步骤

通过上面一步base64转码由‘AAAE2X==’ ,得到[0,0,4,217]数组,需要把这数组转成整数,正确的结果是1241,我到处找文章,没有找到,尝试各种代码,得到的都是anscii乱码,但是我用python3是可以得到1241这结果的,陷入了沉思… …
问题没有得到解决,我又翻各种资料,我看着在线进制转换,反查1241得到16进制为0x04d9,我仔细的看这两者之间的关系,忽然把目光放到了二进制上面。
04的二进制是 0000 0100
d9的二进制是 1101 1001
而04d9 则是 0000 010011011001 这时候的十进制是:1241
于是,这结果不就对了嘛!
高位和代位相差8位,只要把高位的数据向左移8位,然后相加就可以了
于是:

  let temp =AAAE2X==let arr_len= 3;
  let temp_data = base64ToArrayBuffer(temp,4)
  for(var i=0;i<temp_data.length;i++){
  		arr_t = (arr_t+decodeStr[i]<<(arr_len-i)*8>>> 0
  		//  >>> 0 这是把有符号整数转为无符号整数
  }
  console.log('转换成整数的结果:',arr_t)

总结

提示:这里对文章进行总结:
例如:以上就是一个早上搞出来的,做为笔记记录。

  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值