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  }