简介
Package binary implements simple translation between numbers and byte sequences and encoding and decoding of varints.
The varint functions encode and decode single integer values using a variable-length encoding; smaller values require fewer bytes.For a specification, see https://developers.google.com/protocol-buffers/docs/encoding.
翻译:binary 包,简单的实现了数字和byte之间的转化;varints之间的编码和解码。简单说一下,varints是一种使用一个或多个字节表示整型数据的方法。其中数值本身越小,其所占用的字节数越少。
使用
- 数字和byte相互转化
Numbers are translated by reading and writing fixed-size values.A fixed-size value is either a fixed-size arithmetic type (bool, int8, uint8, int16, float32, complex64, ...)or an array or struct containing only fixed-size values.
翻译:通过读入和写入固定长度的值来转化数字。固定长度的值,既可以是指定长度的值,也可以是指定长度数组,也可以是包含指定长度结构体。数字类型必须申明为,bool, int8, uint8, int16, float32, complex64, ...,具体可以去看源码
package main import ( "bytes" "encoding/binary" "fmt" ) func main() { by := []byte{0x00, 0x00, 0x03, 0xe8} var num int32 bytetoint(by, &num) fmt.Println(int(num), num) // 测试 int -> byte by2 := []byte{} var num2 int32 num2 = 333 by2 = inttobyte(&num2) fmt.Println(by2) // 测试 byte -> int var num3 int32 bytetoint(by2,&num3) fmt.Println(num3) } // byte 转化 int func bytetoint(by []byte, num *int32) { b_buf := bytes.NewBuffer(by) binary.Read(b_buf, binary.BigEndian, num) } // 数字 转化 byte func inttobyte(num *int32) []byte { b_buf := new(bytes.Buffer) binary.Write(b_buf, binary.BigEndian,num) return b_buf.Bytes() }
有疑问加站长微信联系(非本文作者)
