如何将Buffer数组转换为十六进制?

时间:2015-12-09 15:09:36

标签: javascript arrays node.js arraybuffer

当我调用我的一个API端点时,我在JSON对象中得到一个Buffer数组。我想将这个数组转换为更多"可用" form(十六进制?)所以我可以比较它们等等。这是对象目前的样子:

"hash": {
  "type": "Buffer",
  "data": [
    151,
    14,
    51,
    26,
    46,
    52,
    5,
    151,
    99,
    107,
    38,
    188,
    138,
    180,
    76,
    56,
    108,
    214,
    135,
    213,
    125,
    134,
    105,
    139,
    129,
    236,
    206,
    157,
    67,
    1,
    12,
    12
  ]
}

我如何将此数组转换为十六进制(或字符串等),以便我可以比较哈希?

3 个答案:

答案 0 :(得分:2)

您只需创建一个新的buffer并将其转换为您需要的格式。

var o = {"hash": {
"type": "Buffer",
"data": [
  151,
  14,
  51,
  26,
  46,
  52,
  5,
  151,
  99,
  107,
  38,
  188,
  138,
  180,
  76,
  56,
  108,
  214,
  135,
  213,
  125,
  134,
  105,
  139,
  129,
  236,
  206,
  157,
  67,
  1,
  12,
  12
  ]
 }
}

console.log(new Buffer(o.hash,'hex').toString('hex'));
// 970e331a2e340597636b26bc8ab44c386cd687d57d86698b81ecce9d43010c0c

答案 1 :(得分:0)

使用Number.prototype.toString



var json = '{"hash": {"type": "Buffer","data": [151,14,51]}}';
var parsed = JSON.parse(json);
document.write("data: " + JSON.stringify(parsed.hash.data) + "<br>");
document.write("hex: ");
parsed.hash.data.forEach(function(b) { document.write(("00" + b.toString(16)).substr(-2)); });
&#13;
&#13;
&#13;

答案 2 :(得分:0)

如果您已有一个Buffer对象,则可以通过以下方式将其表示为十六进制:

myBuffer.toString('hex')
// '970e331a2e340597636b26bc8ab44c386cd687d57d86698b81ecce9d43010c0c'