H5W3
当前位置:H5W3 > go > 正文

【go】如何将golang[]byte转换为字符串

程序中使用到一段代码

data:=[4]byte{1,2,3,4}

想转成字符串显示,试了使用

str:=string(data)
fmt.Print(str)

但是输出为空白,不知道应该怎样转换?

回答

ASCII编码不是都可见的。

package main

import (
    "fmt"
)

func main() {
    data := [4]byte{0x31, 0x32, 0x33, 0x34}
    str := string(data[:])
    fmt.Println(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[:])

会是空白吗?我以为会输出1,2,3,4对应的ascii码,特殊的字符

本文地址:H5W3 » 【go】如何将golang[]byte转换为字符串

评论 0

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址