From 7d7d72e53cdb4995f46c2907d2a85ddb8e99f02f Mon Sep 17 00:00:00 2001 From: Yves Junqueira Date: Thu, 19 Jan 2012 22:50:33 +0100 Subject: [PATCH] Move bencode-related methods to the bencode pkg. This will allow a separation of the dht package. --- addresses.go | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) create mode 100644 addresses.go diff --git a/addresses.go b/addresses.go new file mode 100644 index 0000000..6092098 --- /dev/null +++ b/addresses.go @@ -0,0 +1,23 @@ +package bencode + +import "fmt" + +// These are not strictly bencode features, but often needed by both DHT and +// Torrent clients. + +func BinaryToDottedPort(port string) string { + return fmt.Sprintf("%d.%d.%d.%d:%d", port[0], port[1], port[2], port[3], + (uint16(port[4])<<8)|uint16(port[5])) +} + +// 97.98.99.100:25958 becames "abcdef". +func DottedPortToBinary(b string) string { + a := make([]byte, 6, 6) + var c uint16 + + fmt.Sscanf(b, "%d.%d.%d.%d:%d", &a[0], &a[1], &a[2], &a[3], &c) + a[4] = uint8(c >> 8) + a[5] = uint8(c) + + return string(a) +}