美文网首页go语言Go知识库go系列
golang标准库中的encoding/hex包

golang标准库中的encoding/hex包

作者: ljh123 | 来源:发表于2018-12-12 15:35 被阅读1次

    1、golang中hex包是什么?
    2、hex包给开发者提供了什么内容?以及怎么使用?
    3、相关链接

    一、golang中hex包是什么?
    hex包实现了16进制字符表示的编解码。

    二、hex包给开发者提供了什么内容?以及怎么使用?
    变量

    var ErrLength = errors.new("encoding/hex: odd length hex string")
    

    解码一个长度为奇数的切片时,将返回此错误

    type InvalidByteError byte
    描述一个hex编码字符串中的非法字符。
    func (e InvalidByteError) Error() string

    函数
    1)func DecodeLen(x int) int
    长度x的编码数据解码后的明文数据的长度
    2)func Decode(dst, src []byte) (int, error)
    将src进行解码,返回实际写入dst的字节数,如果产生错误,返回描述错误的error。
    3)func DecodeString(s string) ([]byte, error)
    返会解码后的数据,以及可能会产生的错误。
    4)func EncodedLen(n int) int
    长度x的明文数据编码后的编码数据的长度。
    5)func Encode(dst, src []byte) int
    将src的数据解码为EncodedLen(len(src))字节,返回实际写入dst的字节数:EncodedLen(len(src))。
    6)func EncodeToString(src []byte) string
    将数据src编码为字符串s
    7)func Dump(data []byte) string
    返回给定数据的hex dump格式的字符串,这个字符串与控制台下下 hexdump -C对该数据的输出是一致的。
    8)func Dumper(w io.Writer) io.WriteCloser
    返回一个io.WriteCloser接口,将写入的数据的hex dump格式写入w,具体格式为hexdump -C

    代码案例

    package main
    
    import (
        "encoding/hex"
        "fmt"
        "github.com/lunny/log"
        "os"
    )
    
    func main() {
        // 编码
        src := []byte("hello")
        maxEnLen := hex.EncodedLen(len(src))    // 最大编码长度
        dst1 := make([]byte, maxEnLen)
        n := hex.Encode(dst1, src)
        dst2 := hex.EncodeToString(src)
        fmt.Println("编码后的结果:", string(dst1[:n]))
        fmt.Println("编码后的结果:", dst2)
        // 解码
        src = dst1
        maxDeLen := hex.DecodedLen(len(src))
        dst1 = make([]byte, maxDeLen)
        n, err := hex.Decode(dst1, src)
        if err != nil {
            log.Println(err)
        } else {
            fmt.Printf("%s解码后的数据为:%s\n", src, string(dst1[:n]))
        }
        dst3, err := hex.DecodeString(string(src))
        fmt.Printf("%s解码后的数据为:%s\n", src, string(dst3[:n]))
        // dump
        fmt.Printf(hex.Dump(src))
        // dumper
        stdoutDumper := hex.Dumper(os.Stdout)
        defer stdoutDumper.Close()
    
        stdoutDumper.Write(src)
    }
    /*
    输出内容:
    编码后的结果: 68656c6c6f
    编码后的结果: 68656c6c6f
    68656c6c6f解码后的数据为:hello
    68656c6c6f解码后的数据为:hello
    00000000  36 38 36 35 36 63 36 63  36 66                    |68656c6c6f|
    00000000  36 38 36 35 36 63 36 63  36 66
     */
    

    三、相关链接
    1、https://studygolang.com/pkgdoc

    相关文章

      网友评论

        本文标题:golang标准库中的encoding/hex包

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