下面的代码
let num01 = Buffer.from(Number(1).toString(16), "hex");
console.log(num01);
let num02 = Buffer.from("02", "hex");
console.log(num02);
let num16 = Buffer.from(Number(16).toString(16), "hex");
console.log(num16);
给出以下输出:
<Buffer > // how to fix this into 0x01?
<Buffer 02>
<Buffer 10>
如果我输入一个小于16的十进制数,上面代码的第一行无法创建一个包含任何值的缓冲区。如果Buffer.from("02", "hex");
前面有一个0,那么它就可以正常工作。如何修改第一行,使其接受小于16的十进制数,并创建适当的缓冲区?
1条答案
按热度按时间myzjeezk1#
根据Buffer的文档,“当解码不完全由偶数个十六进制字符组成的字符串时,可能会发生数据截断。”
当创建
num01
时,您提供的字符串“1”没有正确的十六进制编码(没有偶数个字符),因此它被截断为空。要将参数转换为偶数个字符,可以使用padStart method来填充零:
或者处理任意位数的数字: