美文网首页
encoding/hex

encoding/hex

作者: 酷走天涯 | 来源:发表于2018-12-25 09:25 被阅读1次

    hex 实现了16进制字符表示编解码

    func Encode(dst,src []byte)int
    func EncodeToString(src []byte)string
    func Decode(dst,src []byte)(int,error)
    func DecodeString(src []byte)(string,error)
    func DecodedLen(x int) int
    func EncodedLen(n int) int
    func Dump(data []byte) string
    func Dumper(w io.Writer) io.WriteCloser

    编码过程

    package main
    
    import (
        "encoding/hex"
        "fmt"
    )
    
    func main() {
      str := []byte("12345678")
      n := hex.EncodedLen(len(str))
      dst := make([]byte,n)
      // 方式1 编码字符
      hex.Encode(dst,str)
      fmt.Println(dst)
      fmt.Println(string(dst))
      // 方式 2 编码为字符串
      fmt.Println(hex.EncodeToString(str))
    }
    
    image.png

    解码过程

    package main
    
    import (
        "encoding/hex"
        "fmt"
    )
    
    func main() {
      str := []byte("3132333435363738")
      n := hex.DecodedLen(len(str))
      dst := make([]byte,n)
      // 方式1 编码字符
      hex.Decode(dst,str)
      fmt.Println(dst)
      fmt.Println(string(dst))
    
      // 方式 2 编码为字符串
      data,error := hex.DecodeString(string(str))
      if error != nil{
          fmt.Println(error)
      }
      fmt.Println(string(data))
    }
    
    image.png

    我们把字符串3132333435363738 解码后 得到原始数据 12345678

    hex dump格式的字符串

    
    import (
        "encoding/hex"
        "fmt"
    )
    
    func main() {
      str := []byte("12345678")
      fmt.Println(hex.Dump(str))
    }
    
    image.png

    格式化hex dump,写入文件

    package main
    
    import (
        "encoding/hex"
            "os"
    )
    
    func main() {
      str := []byte("12345678")
      fileHex,_:= os.Create("/Users/xujie/go/src/awesomeProject/main/hex.txt")
      defer fileHex.Close()
      ioWriter := hex.Dumper(fileHex)
      ioWriter.Write(str)
    }
    
    image.png

    相关文章

      网友评论

          本文标题:encoding/hex

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