func Bytes2Hex(src []byte) []byte {
	dst := make([]byte, 2*len(src))
	hex.Encode(dst, src)
	return dst
}
BytesToHex transfer binary to hex bytes
package conv
import (
	"encoding/hex"
	"strconv"
	"unsafe"
	"github.com/cosiner/gohper/errors"
)
const (
	HEX  = "0123456789ABCDEF"
	LHEX = "0123456789abcdef"
)
func Uint2Hex(u uint64) []byte {
	s := make([]byte, 16)
	var i int
	for i = 15; i > -1 && u > 0; i-- {
		s[i] = HEX[u&0xF]
		u >>= 4
	}
	return s[i+1:]
}
func Uint2LowerHex(u uint64) []byte {
	s := make([]byte, 16)
	var i int
	for i = 15; i > -1 && u > 0; i-- {
		s[i] = LHEX[u&0xF]
		u >>= 4
	}
	return s[i+1:]
}
func Hex2Uint(str string) (uint64, error) {
	if len(str) > 2 {
		if head := str[:2]; head == "0x" || head == "0X" {
			str = str[2:]
		}
	}
	var n uint64
	for _, c := range str {
		if c >= '0' && c <= '9' {
			c = c - '0'
		} else if c >= 'a' && c <= 'f' {
			c = c - 'a' + 10
		} else if c >= 'A' && c <= 'F' {
			c = c - 'A' + 10
		} else {
			return 0, errors.Newf("Invalid hexadecimal string %s", str)
		}
		n = n << 4
		n |= uint64(c)
	}
	return n, nil
}