美文网首页golang成长记
golang标准库binary学习

golang标准库binary学习

作者: Tim_SSS | 来源:发表于2018-07-05 16:47 被阅读0次

    简介

    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()
    }
    

    相关文章

      网友评论

        本文标题:golang标准库binary学习

        本文链接:https://www.haomeiwen.com/subject/sfrpuftx.html