首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

encoding/hex

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

编码过程

代码语言:javascript
复制
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

解码过程

代码语言:javascript
复制
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格式的字符串

代码语言:javascript
复制
import (
    "encoding/hex"
    "fmt"
)

func main() {
  str := []byte("12345678")
  fmt.Println(hex.Dump(str))
}

image.png

格式化hex dump,写入文件

代码语言:javascript
复制
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

下一篇
举报
领券