程序中使用到一段代码
data:=[4]byte{1,2,3,4}
想转成字符串显示,试了使用
str:=string(data)
fmt.Print(str)
但是输出为空白,不知道应该怎样转换?
程序中使用到一段代码
data:=[4]byte{1,2,3,4}
想转成字符串显示,试了使用
str:=string(data)
fmt.Print(str)
但是输出为空白,不知道应该怎样转换?
不止要关注功能,还有性能。
字节数组强转转字符串是最耗时的,可以采用指针的方式,
func String(b []byte) string {
return *(*string)(unsafe.Pointer(&b))
}
更多的关于这方面的知识,可以参考我的博客 Go语言字符串高效拼接(二) ,有实际的性能测试和分析。
很简单,1,2,3,4映射到ascii码中都不是可见字符。
不信?
你打印65,66,67,68看看是不是大写的ABCD。
另附ASCII码表
http://baike.baidu.com/link?u...
这样做是不高效的,但是可以简写如下:
func convert( b []byte ) string {
s := make([]string,len(b))
for i := range b {
s[i] = strconv.Itoa(int(b[i]))
}
return strings.Join(s,",")
}
调用
bytes := [4]byte{1,2,3,4}
str := convert(bytes[:])
5 回答5.6k 阅读✓ 已解决
6 回答2.9k 阅读
2 回答3.2k 阅读✓ 已解决
1 回答5.3k 阅读✓ 已解决
2 回答3.1k 阅读✓ 已解决
1 回答5.1k 阅读✓ 已解决
2 回答2.6k 阅读✓ 已解决
ASCII编码不是都可见的。