Golang中字符串(string)与字节数组([]byte)一行代码互转实例

目录

一、字符串与字节数组?

二、详细代码

1.简单的方式字节转字符串

2.简单的字符串转字节数组

3.字节转字符串

4.字符串转字节数组

5.完整运行测试

补充:一些结论如下

总结

一、字符串与字节数组?

字符串是 Go 语言中最常用的基础数据类型之一,本质上是只读的字符型数组,虽然字符串往往都被看做是一个整体,但是实际上字符串是一片连续的内存空间。

Go 语言中另外一个类型字节(Byte)。在ASCII中,一个英文字母占一个字节的空间,一个中文汉字占两个字节的空间。英文标点占一个字节,中文标点占两个字节。一个Byte数组中的元素对应一个ASCII码。

二、详细代码 1.简单的方式字节转字符串

代码如下(示例):

func Bytes2String(data []byte) string { return string(data) } 2.简单的字符串转字节数组

代码如下(示例):

func String2Bytes(data string) []byte { return []byte(data) }

ps:以上两种简单的方式略过不提,主要实验 unsafe 正常转译

3.字节转字符串

代码如下(示例):

func BytesToString(data []byte) string { return *(*string)(unsafe.Pointer(&data)) } 4.字符串转字节数组

代码如下(示例):

func StringToBytes(data string) []byte { return *(*[]byte)(unsafe.Pointer(&data)) } 5.完整运行测试

代码如下(示例):

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!

补充:一些结论如下

string常量会在编译期分配到只读段,对应数据地址不可写入,并且相同的string常量不会重复存储。

fmt.Sprintf生成的字符串分配在堆上,对应数据地址可修改。

常量空字符串有数据地址,动态生成的字符串没有设置数据地址

Golang string和[]byte转换,会将数据复制到堆上,返回数据指向复制的数据

动态生成的字符串,即使内容一样,数据也是在不同的空间

只有动态生成的string,数据可以被黑科技修改

string和[]byte通过复制转换,性能损失接近4倍

总结

两个方法来记住字节数组与字符串互转,简单直接,实用性拉满。

到此这篇关于Golang中字符串(string)与字节数组([]byte)一行代码互转的文章就介绍到这了,更多相关Golang字符串与字节数组互转内容请搜索易知道(ezd.cc)以前的文章或继续浏览下面的相关文章希望大家以后多多支持易知道(ezd.cc)!

推荐阅读

    字符库快捷键|字符串快捷键

    字符库快捷键|字符串快捷键,,1. 字符串快捷键1、单行注释单行注释是 #Mac的快捷键是 command+/windows的快捷键是 Ctrl + /2、多行注

    wps插入罗马字符页码|wps插入罗马数字

    wps插入罗马字符页码|wps插入罗马数字,罗马,页码,插入,字符,1.wps怎样插入罗马数字WPS里面插入罗马数字的方法(以WPS文字为例): (1)使用WPS里面

    探探语言设置|探探怎么设置语言

    探探语言设置|探探怎么设置语言,,1. 探探怎么设置语言打开探探软件,然后就有消息提示的红点,点开就行了!其实这些软件都是挺简单的操作的,都是

    git设置编码|git语言设置

    git设置编码|git语言设置,,git设置编码点击cap4j搜索从git直接链接上拉代码。git语言设置Git是一个开源的分布式版本控制系统,可以有效、高

    区域语言设置|区域语言设置工具

    区域语言设置|区域语言设置工具,,区域语言设置工具你好,大致的方法如下,可以参考:1、按下键盘的windows 图标,再开始菜单中单击“设置”;出现的

    数列求和快捷键|数组求和快捷键

    数列求和快捷键|数组求和快捷键,,数组求和快捷键1,这是文本型数组直接运算 不可能 除非单个的取出来分割后转数值型,再找相同的X[1],进行X[2

    c4d语言设置|c4d汉语设置

    c4d语言设置|c4d汉语设置,,1. c4d汉语设置mac版的C4D是这样的,中文字体是有的,但是是以拼音的形式存在,比如黑体就是ht。中文字体以拼音方式

    电脑宣传语|电脑宣传语言

    电脑宣传语|电脑宣传语言,,1. 电脑宣传语言1.我做好了与你过一辈子的打算,也做好了你随时要走的准备,2.每段青春都会苍老,但我希望记忆里的你