1. 程式人生 > 其它 >用goalng實現ascii、UCS2、UTF-8文字字串的解碼與編碼

用goalng實現ascii、UCS2、UTF-8文字字串的解碼與編碼

技術標籤:golanggo字串

用goalng實現ANSI、UCS2、UTF-8文字字串的解碼與編碼

用到的外部包:

"github.com/axgle/mahonia"

ANSI的解碼與編碼

未解碼內容示例:

C4E3BAC3D1BDA3ACBAC3BFAAD0C4A3A1

解碼之後內容:

你好呀,好開心!

解碼程式碼:

func Ansi2String(ascii string) string {
	var baKeyword = make([]byte, len(ascii)/2)
	for i := 0; i < len(baKeyword); i++ {
baKeyword[i] = byte(0xff & StringToInt64(ascii[i*2:i*2+2])) } return mahonia.NewDecoder("GBK").ConvertString(string(baKeyword[:])) } func StringToInt64(str string) int64 { if val, err := strconv.ParseInt(str, 16, 64); err != nil { panic(err) } else { return val } return 0 }

編碼程式碼:

func String2Ansi(str string) string {
	if str == "" {
		return ""
	}
	bytesTemp := []byte(mahonia.NewEncoder("GBK").ConvertString(str))
	var buffer bytes.Buffer
	for i := 0; i < len(bytesTemp); i++ {
		buffer.WriteString(fmt.Sprintf("%x", bytesTemp[
i]&0xff)) } return strings.ToUpper(mahonia.NewEncoder("UTF-8").ConvertString(buffer.String())) }

UCS2的解碼與編碼

未解碼內容示例:

4F60597D5440FF0C597D5F005FC3FF01

解碼之後內容:

你好呀,好開心!

解碼:

func Ucs2Tostring(str string) string {
	var sUnicodev = make([]string, 0)
	for i := 0; i < len(str); i = i + 4 {
		sUnicodev = append(sUnicodev, str[i:i+4])
	}
	var context string
	for _, v := range sUnicodev {
		if len(v) < 1 {
			continue
		}
		temp, err := strconv.ParseInt(v, 16, 32)
		if err != nil {
			panic(err)
		}
		context += fmt.Sprintf("%c", temp)
	}
	return context
}

編碼:

func StringToucs2(inStr string) string {
	if inStr == "" {
		return ""
	}
	u := utf16.Encode([]rune(inStr))
	dst := make([]byte, len(u)*2)
	wi := 0
	for _, r := range u {
		binary.BigEndian.PutUint16(dst[wi:], uint16(r))
		wi += 2
	}
	return strings.ToUpper(fmt.Sprintf("%x", dst))
}

UTF-8的編碼與解碼

未解碼內容示例:

E4BDA0E5A5BDE59180EFBC8CE5A5BDE5BC80E5BF83EFBC81

解碼之後內容:

你好呀,好開心!

解碼:

func Utf8Encode2String(str string) string {
	hexData, err := hex.DecodeString(str)
	if err != nil {
		panic(err)
	}
	// 將 byte 轉換 為字串 輸出結果
	return string(hexData)
}

編碼:

func String2Utf8(str string) string{
	return strings.ToUpper(fmt.Sprintf("%x", str))
}