nodejs中的字节为十六进制,十六进制为字节

时间:2017-04-18 07:08:35

标签: node.js cryptography hex byte buffer

我使用

生成随机16字节
var crypto = require('crypto');
iv   = crypto.randomBytes(16);

如果我是console.log iv,它就像这样打印

<Buffer 54 8e 09 f7 03 56 a1 23 75 94 fb e4 89 e3 36 84>

当我使用iv.toString(&#39; hex&#39;)功能时,会打印

548e09f70356a1237594fbe489e33684

现在我又要将上面的字符串转换回原来的字符,即将548e09f70356a1237594fbe489e33684转换为

<Buffer 54 8e 09 f7 03 56 a1 23 75 94 fb e4 89 e3 36 84>

我试着这样: -

  var buffer_data = new Buffer(res_iv);
      console.log(buffer_data);

它会生成错误的O / P <Buffer 35 34 38 65 30 39 66 37 30 33 35 36 61 31 32 33 37 35 39 34 66 62 65 34 38 39 65 33 33 36 38 34>

也尝试使用

var convertHex = require('convert-hex'); 

但无法获得所需的输出

任何人都知道如何实现这一目标?

2 个答案:

答案 0 :(得分:0)

您可以使用Buffer.from

var convertHex = Buffer.from('548e09f70356a1237594fbe489e33684', 'hex');

答案 1 :(得分:0)

 const buf1 = Buffer.alloc(16, '548e09f70356a1237594fbe489e33684', 'hex');

 // Prints: 

<Buffer 54 8e 09 f7 03 56 a1 23 75 94 fb e4 89 e3 36 84>

 console.log(buf1);

它将打印所需的输出。 @ ponury-kostek感谢真正帮助我的想法

OR

@ ponury-kostek答案(repl.it/HN3e): -

 Buffer.from('548e09f70356a1237594fbe489e33684', 'hex');



 // Prints: 

<Buffer 54 8e 09 f7 03 56 a1 23 75 94 fb e4 89 e3 36 84>