Javascript:如何将dec字节数组对象转换为十六进制字符串?

时间:2017-05-10 19:10:19

标签: javascript

所以我有一个对象,     type" Buffer",     数据是[0,0,2,6,116]的数组。

如果将此数组视为小数,我想转换为十六进制字符串。 0,0,2,6,116 => 0,0,2,6,74 => 00,00,20,06,74

最终我想在网页上看到20674或0000020674。

请问Javascript中最快的方式/内置函数是什么?

1 个答案:

答案 0 :(得分:0)

根据缓冲区的大小,字符串连接可能很昂贵。因此,最快的方法可能是对数据进行编码并使用String.fromCharCode来构建字符串:

function dataToString(data){
  var buffer = [], table = [48,49,50,51,52,53,54,55,56,57,65,66,67,68,69,70];

  for (var i = 0; i < data.length; ++i){
    buffer.push(table[data[i] >> 4]); 
    buffer.push(table[data[i] & 15]);
  }

  return String.fromCharCode.apply(String, buffer);
}

dataToString([0,0,2,6,116]);

或者使用字符串连接:

[0,0,2,6,116].map(v => "0123456789ABCDEF"[v >> 4] + "0123456789ABCDEF"[v & 15]).join('');