bencode (pronounced like Bee-encode) is the encoding used by the peer-to-peer file sharing system BitTorrent for storing and transmitting loosely structured data.
opencave is an open source organization focusing on peer-to-peer solutions, find more information here
go get github.com/opencave/bencodebencode.Marshal take a object and returns a byte slice. bencode.Unmarshal take a byte slice and bind data pointer.
import "github.com/opencave/bencode" func main() { type FileInfo struct {	Name string `bencode:"name"`	Size int `bencode:"size"`	FloatValue float64 // will be ignored, bencode not support float64 datatype	} type Torrent struct {	Announce string `bencode:"announce"`	Files []FileInfo `bencode:"files"`	Created int64 `bencode:"-"`	}	tor := Torrent{	Announce: "http://tracker",	Files: []FileInfo{	{Name: "file1.txt", Size: 1024, FloatValue: 1.0},	},	}	data, err := Marshal(tor) if err != nil { // do something	}	fmt.Println(string(data)) // d8:announce14:http://tracker5:filesld4:name9:file1.txt4:sizei1024eeee	var decoded Torrent	err = Unmarshal(data, &decoded) if err != nil { // do something	}	fmt.Printf("announce: %s\n", tor.Announce) // announce: http://tracker }openHoles is licensed under the Apache License 2.0. Refer to LICENSE for more details.