我联系的服务器是用python编写的,除了bencoded list。
在我现有的python客户端代码中,我做了类似这样的事情:
>>> import bencode
>>> data = [4456, 'Rakesh', 27]
>>> bdata = bencode.bencode(data)
>>> bdata
'li4456e6:Rakeshi27ee'
服务器通过以下方式返回列表:
>>> bencode.bdecode(bdata)
[4456, 'Rakesh', 27]
如何在golang中实现客户端部分?我知道已经编写了bencode包,但这里的技巧是如何通过提供一系列'不同数据类型'的元素来到golang中的'li4456e6:Rakeshi27ee',以便在服务器(用python编写)时进行bdecode ,它回到列表[4456,'Rakesh',27]。
我只在golang中编写客户端,并且不想在服务器端更改任何内容。
答案 0 :(得分:2)
这似乎可以满足您的需求:
package main
import "fmt"
import "bytes"
import "log"
import bencode "github.com/jackpal/bencode-go"
func main() {
a := []interface{}{4456, "Rakesh", 27}
var buf bytes.Buffer
err := bencode.Marshal(&buf, a)
if err != nil {
log.Fatal(err)
}
fmt.Println(buf.String())
}
输出:
li4456e6:Rakeshi27ee