aboutsummaryrefslogtreecommitdiff
path: root/ber/bits.go
blob: 107cd6bbde34c2108bc0af3f3e9a241ffb031ca9 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
package ber

// BitString
type Bits struct {
	Bytes  []byte
	Length int
}

func parseBitString(b []byte) (bs Bits) {
	padding := int(b[0])
	bs.Length = (len(b)-1)*8 - padding
	bs.Bytes = b[1:]
	return
}

func UnmarshalBitString(b []byte) Bits {
	return parseBitString(b)
}

func (bs Bits) String() (s string) {
	for i := 0; i < bs.Length; i++ {
		x := i / 8
		y := 7 - uint(i%8)
		if bs.Bytes[x]&(1<<y) != 0 {
			s += "1"
		} else {
			s += "0"
		}
	}
	return
}