hex和base32和base64的区别与联系
基本概念
用例看个例子: package main import "fmt" import "encoding/hex" import "encoding/base32" import "encoding/base64" func main() { s := "hello world!" sb := []byte(s) hexString := hex.EncodeToString(sb) hexByte,err := hex.DecodeString(hexString) fmt.Println(hexString) // 68656c6c6f20776f726c6421 fmt.Println(hexByte,err) // [104 101 108 108 111 32 119 111 114 108 100 33] <nil> base32StdString := base32.StdEncoding.EncodeToString(sb) base32HexString := base32.HexEncoding.EncodeToString(sb) base32StdByte,err1 := base32.StdEncoding.DecodeString(base32StdString) base32HexByte,err2 := base32.HexEncoding.DecodeString(base32HexString) fmt.Println(base32StdString) // NBSWY3DPEB3W64TMMQQQ==== fmt.Println(base32HexString) // D1IMOR3F41RMUSJCCGGG==== fmt.Println(base32StdByte,err1) // [104 101 108 108 111 32 119 111 114 108 100 33] <nil> fmt.Println(base32HexByte,err2) // [104 101 108 108 111 32 119 111 114 108 100 33] <nil> base64StdString := base64.StdEncoding.EncodeToString(sb) base64UrlString := base64.URLEncoding.EncodeToString(sb) base64StdByte,err1 := base64.StdEncoding.DecodeString(base64StdString) base64UrlByte,err2 := base64.URLEncoding.DecodeString(base64UrlString) fmt.Println(base64StdString) // aGVsbG8gd29ybGQh fmt.Println(base64UrlString) // aGVsbG8gd29ybGQh fmt.Println(base64StdByte,err1) // [104 101 108 108 111 32 119 111 114 108 100 33] <nil> fmt.Println(base64UrlByte,err2) // [104 101 108 108 111 32 119 111 114 108 100 33] <nil> } 使用场景有些小伙伴可能有疑问,为啥要把 "hello world!" 这么明白的东西变成一串看不懂的东西,其实是这个例子使用了可见字符而已,而有很多字符是不可见的,我们需要把这些不可见字符变成可见字符。那为啥要变成可见字符?你是看着乱码舒服还是看着可见字符舒服呢?其实不仅仅舒不舒服的问题,有些时候还必须要用可见字符,例如在网络中传输数据时,不同路由器对于不可见字符的处理是不同的,因此可能出现数据错误,因此还必须使用可见字符。 区别与联系
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |