当我调用我的一个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
]
}
我如何将此数组转换为十六进制(或字符串等),以便我可以比较哈希?
答案 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)
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;
答案 2 :(得分:0)
如果您已有一个Buffer对象,则可以通过以下方式将其表示为十六进制:
myBuffer.toString('hex')
// '970e331a2e340597636b26bc8ab44c386cd687d57d86698b81ecce9d43010c0c'