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

hexdump -C

8)func Dumper(w io.Writer) io.WriteCloser

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
0000000036 38 36 35 36 63 36 6336 66|68656c6c6f|
0000000036 38 36 35 36 63 36 6336 66
 */

三、相關連結

1、ofollow,noindex">https://studygolang.com/pkgdoc