2010-07-17 28 views

回答

3

这是一个原始的十六进制表示。使用pack()H将其转换。然后URL编码它。

1

得到了同事此蟒片断,

r = '' 
s = 'fda164e7af470f83ea699a529845a9353cc26576' 
for n in range(0, len(s), 2): 
    r += '%%%s' % s[n:n+2].upper() 
print r 

输出:%FD%A1%64%E7%AF%47%0F%83%EA%69%9A%52%98%45% A9%35%3C%C2%65%76

工程就像一个魅力。

编辑:就像一个魅力用于获取跟踪器给回状态200(OK),但仍检索洪流细节不工作...

1

如果有人遇到问题和遇到这在将来的线程:这个问题的诀窍是使用PHP: sha1函数的bool $raw_output参数,并将其设置为“true”。

BDecode/DEncode类可以找到HERE。这个名为Trackon的项目还包含许多其他有用的类,以便与洪流跟踪器和文件进行交互。

因此,在PHP中,像这样将努力获得正确信息哈希刮跟踪器的详细信息:

include('./path/to/BDecode.php'); 
include('./path/to/BEncode.php'); 

function getHash($torFile){ 
    $tfile = BDecode(file_get_contents($torFile)); 
    $infohash = sha1(BEncode($tfile["info"]), TRUE); 

    return urlencode($infohash); 
} 

然后仅仅把它就像这样:

$hash = getHash('./path/to/.torrent'); 

希望这可以帮助那里的人。在阅读了许多关于如何获取正确信息散列的文章后,我仍然在挠头。我明白为什么现在没有提到这个问题,但是这个参数是在PHP 5中添加的。如果你没有运行PHP 5,那么在计算之后,你必须将sha1哈希转换为原始二进制。