From bd954772ebf81c7b7c32f19f9973c9007a6442b1 Mon Sep 17 00:00:00 2001 From: Dimitri Sokolyuk Date: Wed, 13 Jul 2016 01:55:09 +0200 Subject: BitField --- cmd/btcheck/main.go | 1 + meta/piece.go | 16 +++++++++++++++- 2 files changed, 16 insertions(+), 1 deletion(-) diff --git a/cmd/btcheck/main.go b/cmd/btcheck/main.go index 24e4540..09844a6 100644 --- a/cmd/btcheck/main.go +++ b/cmd/btcheck/main.go @@ -42,4 +42,5 @@ func main() { pieces[i] = p } fmt.Printf("%6.2f%%\n", pieces.Good()) + fmt.Println(pieces.BitField()) } diff --git a/meta/piece.go b/meta/piece.go index bc93a13..354db9a 100644 --- a/meta/piece.go +++ b/meta/piece.go @@ -1,6 +1,10 @@ package meta -import "crypto/sha1" +import ( + "crypto/sha1" + + "dim13.org/btget/bitfield" +) type Pieces []Piece @@ -27,3 +31,13 @@ func (p Pieces) Good() float64 { } return float64(good) * 100.0 / float64(len(p)) } + +func (p Pieces) BitField() bitfield.BitField { + bf := bitfield.New(len(p)) + for i, v := range p { + if v.Ok { + bf.Set(i) + } + } + return bf +} -- cgit v1.2.3