golang中uint8字節切片轉字符串


假如拿到了一個字節切片test1 = {'a', 'b', 'c', 'd', 11}

package main

import (
	"fmt"
	"reflect"
)

func main(){
	test1 := []byte {'a', 'b', 'c', 'd', 11}
	fmt.Println(test1)
	
	test2 := string(test1)
	fmt.Println(test2)

	fmt.Println(reflect.TypeOf(test1[0]))
	return
}

打印的結果

[97 98 99 100 11]

abcd

uint8

這其實就是ASCII碼值與英文ASCII字符的互轉。ASCII的碼值本質上就是uint8類型。 留意一下11對應的是垂直制表符(控制字符), 因此打印出來是看起來是亂碼的 “ ”這個。

對於ASCII碼表,應該能簡單的記憶一些常用的,有時候比較方便。 參考: http://asciima.com/

這篇博客主要是記錄今天遇到的一個Bug: 在用sring對字節序列進行強轉時,報了一個不是uint8的錯誤。

我的解釋:
字節 --> 字符串 的轉換過程,本質上是字節解碼的過程。 這bug的原因應該是該字節不是純粹的uint8類型,它不是ASCII碼,它有可能是utf-8的編碼或者別的如GBK。

因此應該先確定是哪種編碼,指定編碼的類型,然后再選擇轉換的方式。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM