为请求torrent跟踪器编码info_hash

时间:2014-08-07 21:45:15

标签: node.js get urlencode bittorrent

我想与Node.js中的torrent跟踪器进行交互。 所以我计算了info_hash,我得到了一个好的: 7cd350e5a70f0a61593e636543f9fc670ffa8a4d

但是要发送给跟踪器,它必须是urlencoded。问题是我不知道怎么做才能获得正确的编码值 %7c%d3P%e5%a7%0f%0aaY%3eceC%f9%fcg%0f%fa%8aM

我不知道如何获得此值,因为它不遵循%nn格式

我尝试使用encodeURIComponent和querystring,但我没有找到正确的字符串。

1 个答案:

答案 0 :(得分:2)

这是一个与预期输出(包括大写)匹配的解决方案:

var h = '7cd350e5a70f0a61593e636543f9fc670ffa8a4d';
h = h.replace(/.{2}/g, function(m) {
  var v = parseInt(m, 16);
  if (v <= 127) {
    m = encodeURIComponent(String.fromCharCode(v));
    if (m[0] === '%')
      m = m.toLowerCase();
  } else
    m = '%' + m;
  return m;
});
console.log(h);

// outputs: %7c%d3P%e5%a7%0f%0aaY%3eceC%f9%fcg%0f%fa%8aM
相关问题