123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263 |
- 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
- }
|