package yu_hex import ( yu_const "gogs.qqck.cn/s/tools/const" ) // Lower // // @Description: 编码为小写hex func Lower(buf []byte) string { j_buf := make([]byte, 0, len(buf)*2) for _, j_byte := range buf { j_buf = append(j_buf, yu_const.HexLower[j_byte>>4]) j_buf = append(j_buf, yu_const.HexLower[j_byte&0x0f]) } return string(j_buf) } // Upper // // @Description: 编码为大写hex func Upper(buf []byte) string { j_buf := make([]byte, 0, len(buf)*2) for _, j_byte := range buf { j_buf = append(j_buf, yu_const.HexUpper[j_byte>>4]) j_buf = append(j_buf, yu_const.HexUpper[j_byte&0x0f]) } return string(j_buf) } const _reverseHexTable = "" + "\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff" + "\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff" + "\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff" + "\x00\x01\x02\x03\x04\x05\x06\x07\x08\x09\xff\xff\xff\xff\xff\xff" + "\xff\x0a\x0b\x0c\x0d\x0e\x0f\xff\xff\xff\xff\xff\xff\xff\xff\xff" + "\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff" + "\xff\x0a\x0b\x0c\x0d\x0e\x0f\xff\xff\xff\xff\xff\xff\xff\xff\xff" + "\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff" + "\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff" + "\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff" + "\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff" + "\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff" + "\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff" + "\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff" + "\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff" + "\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff" func Decode(s string) []byte { if s == "" || len(s)%2 == 1 { return nil } j_buf := make([]byte, 0, len(s)/2) for j_i := 0; j_i < len(s); j_i += 2 { j_left := _reverseHexTable[s[j_i]] j_right := _reverseHexTable[s[j_i+1]] if j_left > 0x0f || j_right > 0x0f { return nil } j_buf = append(j_buf, (j_left<<4)|j_right) } return j_buf }