将缓冲区转换为十六进制字符串

问题描述 投票:0回答:1

我想将节点JS缓冲区转换为十六进制字符串。显然,我首先对此进行了搜索,但是没有一个建议的解决方案起作用。

例如,在this question中,已接受答案下方的注释说您应该这样做:

let signature4 = Buffer.from(signature3.r, 'hex') + Buffer.from(signature3.s, 'hex') + Buffer.from(signature3.v, 'hex');

但是这产生了:

TypeError [ERR_INVALID_ARG_TYPE]: The "value" argument must not be of type number. Received type number

如果我去找一个实际的答案,告诉我要这样做:

let signature4 = signature3.r.toString('hex') + signature3.s.toString('hex') + signature3.v.toString('hex');

我收到此错误:

 RangeError: toString() radix argument must be between 2 and 36

如果我遵循错误消息中给出的建议,并输入16这样的数字:

let signature4 = signature3.r.toString(16) + signature3.s.toString(16) + signature3.v.toString(16);

我收到此错误消息:

 TypeError [ERR_UNKNOWN_ENCODING]: Unknown encoding: 16

如果我改为将16作为字符串传递:

let signature4 = signature3.r.toString('16') + signature3.s.toString('16') + signature3.v.toString('16');

我收到相同的错误消息:

 TypeError [ERR_UNKNOWN_ENCODING]: Unknown encoding: 16

那么,目前的做法是什么?

我使用Node v10.1.8.1

node.js hex buffer
1个回答
0
投票

这对我有用...您的对象实际上是Node.js缓冲区吗?

Buffer.from([255,254,0,1]).toString("hex") // ffee0001
© www.soinside.com 2019 - 2024. All rights reserved.