網站首頁 編程語言 正文
一、字符串與字節數組?
字符串是 Go 語言中最常用的基礎數據類型之一,本質上是只讀的字符型數組,雖然字符串往往都被看做是一個整體,但是實際上字符串是一片連續的內存空間。
Go 語言中另外一個類型字節(Byte)。在ASCII中,一個英文字母占一個字節的空間,一個中文漢字占兩個字節的空間。英文標點占一個字節,中文標點占兩個字節。一個Byte數組中的元素對應一個ASCII碼。
二、詳細代碼
1.字節轉字符串
代碼如下(示例):
func BytesToString(data []byte) string { return *(*string)(unsafe.Pointer(&data)) }
2.字符串轉字節數組
代碼如下(示例):
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!
總結
兩個方法來記住字節數組與字符串互轉,簡單直接,實用性拉滿。
在byte數組轉字符串時,需要去掉數組中ASII為0的字符,數組的大小是固定的,字符串本身的長度可能小于數組的長度,如果直接轉換成字符串就會出現問題。使用byte切片時候正常的原因是切片的長度會自動和字符串的長度一致,string會區切片長度個數的字符。而數組在初始化時會有默認值,且數組的長度和容量一樣,轉換成字符串的時候可能會多出一部分字符,從而導致出錯。
原文鏈接:https://blog.csdn.net/moer0/article/details/122934188
相關推薦
- 2022-12-06 Pthread并發編程之線程基本元素和狀態的剖析_C 語言
- 2022-07-11 python利用多線程+隊列技術爬取中介網互聯網網站排行榜_python
- 2022-06-14 .NET?Core(.NET6)中gRPC使用實踐_實用技巧
- 2022-09-06 Python進程管理神器Supervisor詳解_python
- 2022-10-14 Redisson之分布式鎖解決商品秒殺簡單示例
- 2022-10-05 Flutter列表滾動定位超強輔助庫使用示例詳解_IOS
- 2023-09-17 POM文件中使用<exclusions>解決jar沖突問題
- 2023-07-17 uniapp開發,打包成H5部署到服務器
- 最近更新
-
- window11 系統安裝 yarn
- 超詳細win安裝深度學習環境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權
- redisson分布式鎖中waittime的設
- maven:解決release錯誤:Artif
- restTemplate使用總結
- Spring Security之安全異常處理
- MybatisPlus優雅實現加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務發現-Nac
- Spring Security之基于HttpR
- Redis 底層數據結構-簡單動態字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應用詳解
- 聊聊消息隊列,發送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支