【问题标题】:Convert Uint8Array into hex string equivalent in node.js在 node.js 中将 Uint8Array 转换为等效的十六进制字符串
【发布时间】:2017-01-06 14:25:29
【问题描述】:

我正在使用 node.js v4.5。假设我有这个 Uint8Array 变量。

var uint8 = new Uint8Array(4);
uint8[0] = 0x1f;
uint8[1] = 0x2f;
uint8[2] = 0x3f;
uint8[3] = 0x4f;

这个数组可以是任意长度,但我们假设长度为 4。

我想要一个将uint8 转换为等效十六进制字符串的函数。

var hex_string = convertUint8_to_hexStr(uint8);
//hex_string becomes "1f2f3f4f"

【问题讨论】:

    标签: node.js string-conversion


    【解决方案1】:

    您可以使用Buffer.from(),然后使用toString('hex')

    let hex = Buffer.from(uint8).toString('hex');
    

    【讨论】:

      【解决方案2】:

      另一种解决方案:

      将 int8 转换为 hex 的基本函数:

      // padd with leading 0 if <16
      function i2hex(i) {
        return ('0' + i.toString(16)).slice(-2);
      }
      

      reduce:

      uint8.reduce(function(memo, i) {return memo + i2hex(i)}, '');
      

      或者mapjoin

      Array.from(uint8).map(i2hex).join('');
      

      【讨论】:

      • 当十进制值 uint8.reduce(function(memo, i) { return memo + ("0"+i.toString(16)).slice(-2); }, '');
      • 第二种方法仅适用于数组,但不适用于 Uint8Array,因为 map 函数尝试将字符串写入数组(对于 Uint8Array,它被强制转换为数字并在有字母时计算为零)十六进制数)。解决方法是使用 Array.from(uint8) 而不是 uint8。
      猜你喜欢
      • 2022-07-21
      • 1970-01-01
      • 2020-09-03
      • 2010-10-23
      • 2023-03-29
      • 2018-01-31
      • 2018-01-22
      • 1970-01-01
      • 2013-02-07
      相关资源
      最近更新 更多