hex decode 得到的值作为map的key不能互调的问题

phpstudyer · · 660 次点击
s := string(b) 要谨慎使用,在不确定b一定是表示一个字符串的情况下,b里面很可能有不可打印字符,比如上面的0x00(NUL)就是不可打印的 package main import ( "fmt" "encoding/hex" ) func main() { fmt.Printf("%X\n","01170303001") b, _ := hex.DecodeString("3031313730333033303031") s := string(b) fmt.Printf("%d\n", b) fmt.Printf("%c\n", b) fmt.Println(s, len(s)) b1, _ := hex.DecodeString("00300031003100370030003300300033003000300031") s1 := string(b1) fmt.Printf("%d\n", b1) fmt.Printf("%c\n", b1) fmt.Println(s1, len(s1)) } 3031313730333033303031 [48 49 49 55 48 51 48 51 48 48 49] [0 1 1 7 0 3 0 3 0 0 1] 01170303001 11 [0 48 0 49 0 49 0 55 0 48 0 51 0 48 0 51 0 48 0 48 0 49] [ 0 1 1 7 0 3 0 3 0 0 1] 01170303001 22
#4
更多评论
谁告诉你这两个值转过来相等的01170303001另一个是 0 1 1 7 .....这样的,有空字符。
#1
当你不知道原因的时候一定要去看下源码
#2