golang中[]byte转成string

golang中[]byte转成string,第1张

项目中 RPC 接口由于在入口直接打印 []byte 字节数组形式了,在查询日志的时候很难辨认,需要把其复制下来,再转成字符串。

比如,日志中打印的是 “[104 101 108 108 111 32 119 111 114 108 100]” 这样形式的 byte 数组,那么具体 *** 作如下

func byte2Str()  {
	bt := []byte{104,101,108,108,111,32,119,111,114,108,100}
	fmt.Println(string(bt)) // 输出 hello world
}

当然了,逆推下,上述 byte 数组是如下方法打印的

func str2Byte()  {
	str := "hello world"
	bt := []byte(str)
	fmt.Println(bt) // 输出 [104 101 108 108 111 32 119 111 114 108 100]
}

最后,推荐下两个性能更优的转换函数

func StringToBytes(s string) []byte {
	return *(*[]byte)(unsafe.Pointer(
		&struct {
			string
			Cap int
		}{s, len(s)},
	))
}

func BytesToString(b []byte) string {
	return *(*string)(unsafe.Pointer(&b))
}

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/989615.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-21
下一篇 2022-05-21

发表评论

登录后才能评论

评论列表(0条)

保存