您现在的位置是:网站首页> 编程资料编程资料
Golang 字符串与字节数组互转的实现_Golang_
2023-05-26
423人已围观
简介 Golang 字符串与字节数组互转的实现_Golang_
一、字符串与字节数组?
字符串是 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会区切片长度个数的字符。而数组在初始化时会有默认值,且数组的长度和容量一样,转换成字符串的时候可能会多出一部分字符,从而导致出错。
到此这篇关于Golang 字符串与字节数组互转的实现的文章就介绍到这了,更多相关Golang 字符串与字节数组互转内容请搜索以前的文章或继续浏览下面的相关文章希望大家以后多多支持!
您可能感兴趣的文章:
相关内容
- Golang 处理浮点数遇到的精度问题(使用decimal)_Golang_
- 浅谈Golang Slice切片如何扩容的实现_Golang_
- Golang 如何限制木马图片上传服务器的实例_Golang_
- 详解golang 定时任务time.Sleep和time.Tick实现结果比较_Golang_
- golang结合mysql设置最大连接数和最大空闲连接数_Golang_
- 详解Golang Map中的key为什么是无序的_Golang_
- 深入理解go缓存库freecache的使用_Golang_
- Go语言切片常考的面试真题解析_Golang_
- Golang语言的多种变量声明方式与使用场景详解_Golang_
- Go语言标准输入输出库的基本使用教程_Golang_
