我想在Node.js中与torrent跟踪器进行交互。所以我计算了info_hash,得到了一个好的:7cd350e5a70f0a61593e636543f9fc670ffa8a4d
但是要发送到跟踪器,它必须被unlencoded。问题是我不知道如何得到正确的编码值%7c%d3P%e5%a7%0f%0aaY%3eceC%f9%fcg%0f%fa%8aM
我不知道如何得到这个值,因为它不遵循%nn
格式
我尝试使用encodeuriccomponent和querystring,但我没有得到正确的字符串。
这里有一个匹配预期输出(包括大写)的解决方案:
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