1

我基本上试图实现这一点:如何从洪流跟踪器中获取对等点

我被困在这里:

不仅如此,您还必须将哈希的实际值作为 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 中执行以下操作。谁能启发我?

我需要做同样的事情:从十六进制表示转换为哈希的字节串值。

提前致谢

4

1 回答 1

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))
于 2012-11-20T13:32:19.950 回答