wordpress仿站价格,精细化工网站建设,wordpress进后台慢,南宁做网站服务商golang中encoding/binary包
1、golang包中的binary包是什么#xff1f; 2、binary为我们开发者提供了哪些内容#xff1f;以及怎么使用#xff1f; 3、编解码有哪几种方法#xff1f;
转化成二进制格式与原本数据转字符串相比会更节省空间
一、golang包中的binary包是什…golang中encoding/binary包
1、golang包中的binary包是什么 2、binary为我们开发者提供了哪些内容以及怎么使用 3、编解码有哪几种方法
转化成二进制格式与原本数据转字符串相比会更节省空间
一、golang包中的binary包是什么 此包实现了对数据与byte之间的转换以及varint的编解码。
二、binary为我们开发者提供了哪些内容以及怎么使用 数据的byte序列化转换
func Read(r io.Reader, order ByteOrder, data interface{}) error
func Write(w io.Writer, order ByteOrder, data interface{}) error
func Size(v interface{}) intuvarint和varint的编解码
func PutUvalint(buf []byte, x uint64) int
func PutVarint(buf []byte, x int64) int
func Uvarint(buf []byte) (uint64, int)
func Varint(buf []byte) (int64, int)
func ReadUvarint(r io.ByteReader) (uint64, error)
func ReadVarint(r io.ByteReader) (int64, error)结构体
type ByteOrder可以定义自己的字节序结构用于序列化和反序列化数据。1func Read(r io.Reader, order ByteOrder, data interface{}) error
参数列表
1r 可以读出字节流的数据源
2order 特殊字节序包中提供大端字节序和小端字节序
3data 需要解码成的数据
返回值error 返回错误
功能说明Read从r中读出字节数据并反序列化成结构数据。data必须是固定长的数据值或固定长数据的slice。从r中读出的数据可以使用特殊的 字节序来解码并顺序写入value的字段。当填充结构体时使用(_)名的字段讲被跳过。代码案例
package mainimport (fmtlogbytesencoding/binary
)func main() {var pi float64b : []byte{0x18,0x2d,0x44,0x54,0xfb,0x21,0x09,0x40}buf : bytes.NewBuffer(b)err : binary.Read(buf, binary.LittleEndian, pi)if err ! nil {log.Fatalln(binary.Read failed:, err)}fmt.Println(pi)
}2Write(w io.Writer, order ByteOrder, data interface{}) error
参数列表
1w 可写入字节流的数据
2order 特殊字节序包中提供大端字节序和小端字节序
3data 需要解码的数据
返回值error 返回错误
功能说明
Write讲data序列化成字节流写入w中。data必须是固定长度的数据值或固定长数据的slice或指向此类数据的指针。写入w的字节流可用特殊的字节序来编码。另外结构体中的(_)名的字段讲忽略。代码案例
package mainimport (bytesmathencoding/binarylogfmt
)func main() {buf : new(bytes.Buffer)pi : math.Pierr : binary.Write(buf, binary.LittleEndian, pi)if err ! nil {log.Fatalln(err)}fmt.Println(buf.Bytes())
}3func Size(v interface{}) int
参数列表v 需要计算长度的数据
返回值int 数据序列化之后的字节长度
功能说明
Size讲返回数据系列化之后的字节长度数据必须是固定长数据类型、slice和结构体及其指针。代码实例
package mainimport (fmtencoding/binary
)func main() {var a intp : ab : [10]int64{1}s : adsabs : make([]byte, 10)fmt.Println(binary.Size(a)) // -1fmt.Println(binary.Size(p)) // -1fmt.Println(binary.Size(b)) // 80fmt.Println(binary.Size(s)) // -1fmt.Println(binary.Size(bs)) // 10
}