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