我基本上试图实现这个目标:how to get the peers from an torrent tracker
我被困在这里:
不仅如此,您还必须将哈希的实际值作为GET参数发送。 “76a36f1d11c72eb5663eeb4cf31e351321efa3a3”是散列的十六进制表示,但跟踪器协议指定您需要发送散列值(= bytestring)。因此,您必须首先解码十六进制表示,然后对其进行URL编码:urllib.urlencode([('info_hash','76a36f1d11c72eb5663eeb4cf31e351321efa3a3'.decode('hex'))])=='info_hash = v%A3o%1D%11 %C7。%B5f%3E%EBL%F3%1E5%13%21%EF%A3%A3'#在Python中。
我已经研究了很多,由于我的新编码技巧,我无法在vb.net中做到以下几点。有人可以赐教我吗?
我需要做同样的事情: 从十六进制表示转换为哈希的bytestring值。
提前致谢
答案 0 :(得分:0)
我很惊讶没有更简单的方法将十六进制字符串转换为字节数组,但我没有快速找到一个,所以这里很难:
Dim hex As String = "76a36f1d11c72eb5663eeb4cf31e351321efa3a3"
'prepend leading zero if needed
If hex.Length Mod 2 <> 0 Then
hex = " " & hex
End If
Dim bytes As Byte() = New Byte((hex.Length \ 2) - 1) {}
For byteNum As Int32 = 0 To bytes.Length - 1
bytes(byteNum) = Byte.Parse(hex.Substring(byteNum * 2, 2),
Globalization.NumberStyles.AllowHexSpecifier)
Next
'convert to an ansi string and escape
Dim final As String =Uri.EscapeDataString(
System.Text.Encoding.Default.GetString(bytes))