收藏
回答

这个函数不懂,可以帮我逐句解释下什么意思吗?

function ab2hex(buffer) {

    var hexArr = Array.prototype.map.call(

    new Uint8Array(buffer),

    function (bit) {

        return ('00' + bit.toString(16)).slice(-2)

    })

    return hexArr.join('');

}


回答关注问题邀请回答
收藏

4 个回答

  • ᝰꫛꫀꪝ .
    ᝰꫛꫀꪝ .
    2019-07-05

    首先new Uint8Array(buffer)构造函数会生成一个数组a,然后通过call方法将map方法的this指向a,相当于a数组调用一次map方法,所以函数可以改写成:

    function ab2hex(buffer) {

        var hexArr = new Uint8Array(buffer).map(

            function (bit) {

            return ('00' + bit.toString(16)).slice(-2)

            }

        )

        return hexArr.join('');

    }

    剩下的那些toString、slice和join方法可以自行百度解决


    2019-07-05
    有用 1
    回复 1
    • 🦄
      🦄
      2019-07-05

      好的,谢谢

      2019-07-05
      回复
  • 阿巴阿巴
    阿巴阿巴
    2019-08-22

    通俗总结:ArrayBuffer转换为byte


    2019-08-22
    有用
    回复
  • 少年啦
    少年啦
    2019-07-05

    Array.prototype.map.call 用来传入一个类数组对象

    new Uint8Array(buffer),是一个ArrayBuffer


    2019-07-05
    有用
    回复 8
    • Mr.Zhao
      Mr.Zhao
      2019-07-05

      讲的太生硬

      2019-07-05
      回复
    • 🦄
      🦄
      2019-07-05

      嗯,主要是 function(bit){

          return ('00'+bit.toString(16).slice(-2))

      }没看懂

      2019-07-05
      回复
    • Mr.Zhao
      Mr.Zhao
      2019-07-05回复🦄

      百度一下闭包

      2019-07-05
      1
      回复
    • 叶無魂
      叶無魂
      2019-07-05回复🦄

      bit应该是一个num值   toString(16)  转成  16进制   slice(-2) 取最后两位  然后前面加两个00


      最后输出应该是 一个 长度为4的 字符串

      2019-07-05
      回复
    • 少年啦
      少年啦
      2019-07-05回复🦄

      00作为参数补到bit.toString的前两位

      2019-07-05
      1
      回复
    查看更多(3)
  • 祺爸💎
    祺爸💎
    2019-07-05

    去报个班吧

    2019-07-05
    有用
    回复
登录 后发表内容