Golang 字符串與字節(jié)數組互轉的實現
一、字符串與字節(jié)數組?
字符串是 Go 語言中最常用的基礎數據類型之一,本質上是只讀的字符型數組,雖然字符串往往都被看做是一個整體,但是實際上字符串是一片連續(xù)的內存空間。
Go 語言中另外一個類型字節(jié)(Byte)。在ASCII中,一個英文字母占一個字節(jié)的空間,一個中文漢字占兩個字節(jié)的空間。英文標點占一個字節(jié),中文標點占兩個字節(jié)。一個Byte數組中的元素對應一個ASCII碼。
二、詳細代碼
1.字節(jié)轉字符串
代碼如下(示例):
func BytesToString(data []byte) string { return *(*string)(unsafe.Pointer(&data)) }
2.字符串轉字節(jié)數組
代碼如下(示例):
func StringToBytes(data string) []byte { return *(*[]byte)(unsafe.Pointer(&data)) }
3.完整運行測試
代碼如下(示例):
func BytesToString(data []byte) string { ?? ?return *(*string)(unsafe.Pointer(&data)) } func StringToBytes(data string) []byte { ?? ?return *(*[]byte)(unsafe.Pointer(&data)) } func main() { ?? ?str := "hello world!" ?? ?fmt.Println(str) ?? ?a := StringToBytes(str) ?? ?fmt.Println(a) ?? ?b := BytesToString(a) ?? ?fmt.Println(b) }
結果(示例):
成功轉譯出Hello world!
總結
兩個方法來記住字節(jié)數組與字符串互轉,簡單直接,實用性拉滿。
在byte數組轉字符串時,需要去掉數組中ASII為0的字符,數組的大小是固定的,字符串本身的長度可能小于數組的長度,如果直接轉換成字符串就會出現問題。使用byte切片時候正常的原因是切片的長度會自動和字符串的長度一致,string會區(qū)切片長度個數的字符。而數組在初始化時會有默認值,且數組的長度和容量一樣,轉換成字符串的時候可能會多出一部分字符,從而導致出錯。
到此這篇關于Golang 字符串與字節(jié)數組互轉的實現的文章就介紹到這了,更多相關Golang 字符串與字節(jié)數組互轉內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
Golang中優(yōu)秀的消息隊列NSQ基礎安裝及使用詳解
這篇文章主要介紹了Golang中優(yōu)秀的消息隊列NSQ基礎安裝及使用詳解,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-12-12Windows10系統(tǒng)下安裝Go環(huán)境詳細步驟
Go語言是谷歌推出的一款全新的編程語言,可以在不損失應用程序性能的情況下極大的降低代碼的復雜性,這篇文章主要給大家介紹了關于Windows10系統(tǒng)下安裝Go環(huán)境的詳細步驟,需要的朋友可以參考下2023-11-11