github.com/gogf/gf@v1.16.9/.example/encoding/gbinary/bits1.go (about) 1 package main 2 3 import ( 4 "fmt" 5 6 "github.com/gogf/gf/encoding/gbinary" 7 ) 8 9 func main() { 10 // 传感器状态,0:已下线, 1:开启, 2:关闭, 3:待机 11 count := 100 12 status := 1 13 14 // 网关编码 15 bits := make([]gbinary.Bit, 0) 16 for i := 0; i < count; i++ { 17 bits = gbinary.EncodeBits(bits, status, 2) 18 } 19 buffer := gbinary.EncodeBitsToBytes(bits) 20 fmt.Println("buffer length:", len(buffer)) 21 22 /* 上报过程忽略,这里只展示编码/解码示例 */ 23 24 // 平台解码 25 alivecount := 0 26 sensorbits := gbinary.DecodeBytesToBits(buffer) 27 for i := 0; i < len(sensorbits); i += 2 { 28 if gbinary.DecodeBits(sensorbits[i:i+2]) == 1 { 29 alivecount++ 30 } 31 } 32 fmt.Println("alived sensor:", alivecount) 33 }