github.com/gogf/gf@v1.16.9/.example/encoding/gbinary/binary.go (about)

     1  package main
     2  
     3  import (
     4  	"fmt"
     5  
     6  	"github.com/gogf/gf/encoding/gbinary"
     7  	"github.com/gogf/gf/os/glog"
     8  )
     9  
    10  func main() {
    11  	// 使用gbinary.Encoded对基本数据类型进行二进制打包
    12  	fmt.Println(gbinary.Encode(18, 300, 1.01))
    13  
    14  	// 使用gbinary.Decode对整形二进制解包,注意第二个及其后参数为字长确定的整形变量的指针地址,字长确定的类型,
    15  	// 例如:int8/16/32/64、uint8/16/32/64、float32/64
    16  	// 这里的1.01默认为float64类型(64位系统下)
    17  	buffer := gbinary.Encode(18, 300, 1.01)
    18  	var i1 int8
    19  	var i2 int16
    20  	var f3 float64
    21  	if err := gbinary.Decode(buffer, &i1, &i2, &f3); err != nil {
    22  		glog.Error(err)
    23  	} else {
    24  		fmt.Println(i1, i2, f3)
    25  	}
    26  
    27  	// 编码/解析 int,自动识别变量长度
    28  	fmt.Println(gbinary.DecodeToInt(gbinary.EncodeInt(1)))
    29  	fmt.Println(gbinary.DecodeToInt(gbinary.EncodeInt(300)))
    30  	fmt.Println(gbinary.DecodeToInt(gbinary.EncodeInt(70000)))
    31  	fmt.Println(gbinary.DecodeToInt(gbinary.EncodeInt(2000000000)))
    32  	fmt.Println(gbinary.DecodeToInt(gbinary.EncodeInt(500000000000)))
    33  
    34  	// 编码/解析 uint,自动识别变量长度
    35  	fmt.Println(gbinary.DecodeToUint(gbinary.EncodeUint(1)))
    36  	fmt.Println(gbinary.DecodeToUint(gbinary.EncodeUint(300)))
    37  	fmt.Println(gbinary.DecodeToUint(gbinary.EncodeUint(70000)))
    38  	fmt.Println(gbinary.DecodeToUint(gbinary.EncodeUint(2000000000)))
    39  	fmt.Println(gbinary.DecodeToUint(gbinary.EncodeUint(500000000000)))
    40  
    41  	// 编码/解析 int8/16/32/64
    42  	fmt.Println(gbinary.DecodeToInt8(gbinary.EncodeInt8(int8(100))))
    43  	fmt.Println(gbinary.DecodeToInt16(gbinary.EncodeInt16(int16(100))))
    44  	fmt.Println(gbinary.DecodeToInt32(gbinary.EncodeInt32(int32(100))))
    45  	fmt.Println(gbinary.DecodeToInt64(gbinary.EncodeInt64(int64(100))))
    46  
    47  	// 编码/解析 uint8/16/32/64
    48  	fmt.Println(gbinary.DecodeToUint8(gbinary.EncodeUint8(uint8(100))))
    49  	fmt.Println(gbinary.DecodeToUint16(gbinary.EncodeUint16(uint16(100))))
    50  	fmt.Println(gbinary.DecodeToUint32(gbinary.EncodeUint32(uint32(100))))
    51  	fmt.Println(gbinary.DecodeToUint64(gbinary.EncodeUint64(uint64(100))))
    52  
    53  	// 编码/解析 string
    54  	fmt.Println(gbinary.DecodeToString(gbinary.EncodeString("I'm string!")))
    55  }