为请求 torrent 跟踪器编码 info_hash

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

我想与 Node.js 中的 torrent 跟踪器交互。 所以我计算了 info_hash 并得到了好的结果:

7cd350e5a70f0a61593e636543f9fc670ffa8a4d

但要发送到跟踪器,必须对其进行 urlencoded。问题是我不知道如何获得正确的编码值

%7c%d3P%e5%a7%0f%0aaY%3eceC%f9%fcg%0f%fa%8aM

我不知道如何获取这个值,因为它不遵循

%nn
格式

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

node.js get urlencode bittorrent
2个回答
3
投票

这是一种符合预期输出(包括大小写)的解决方案:

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

0
投票

@mscdex,我无法理解,'7c'(在 info_hash 的开头)如何没有转换为 ascii '|' (管道符号)?

© www.soinside.com 2019 - 2024. All rights reserved.