首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何将以零结尾的字节数组转换为字符串?

如何将以零结尾的字节数组转换为字符串?
EN

Stack Overflow用户
提问于 2013-01-09 15:19:48
回答 8查看 501K关注 0票数 531

我需要读取[100]byte来传输一堆string数据。

因为并不是所有的string都是100个字符,所以byte array的其余部分用0s填充。

如果我通过:string(byteArray[:])[100]byte转换为string,尾部的0将显示为^@^@s。

在C中,string将在0上终止,那么在Go中将此byte array转换为string的最佳方法是什么?

EN

回答 8

Stack Overflow用户

回答已采纳

发布于 2013-01-09 15:24:39

将数据读入字节片的方法返回读取的字节数。您应该保存该数字,然后使用它来创建字符串。如果n是读取的字节数,您的代码将如下所示:

代码语言:javascript
复制
s := string(byteArray[:n])

要转换完整的字符串,可以使用以下命令:

代码语言:javascript
复制
s := string(byteArray[:len(byteArray)])

这相当于:

代码语言:javascript
复制
s := string(byteArray[:])

如果由于某些原因您不知道n,那么可以使用bytes包来查找它,假设您的输入中没有嵌入空字符。

代码语言:javascript
复制
n := bytes.Index(byteArray[:], []byte{0})

或者,正如icza所指出的,您可以使用以下代码:

代码语言:javascript
复制
n := bytes.IndexByte(byteArray[:], 0)
票数 542
EN

Stack Overflow用户

发布于 2013-09-04 21:52:34

使用:

代码语言:javascript
复制
s := string(byteArray[:])
票数 374
EN

Stack Overflow用户

发布于 2016-11-02 16:57:14

过于简单的解决方案:

代码语言:javascript
复制
str := fmt.Sprintf("%s", byteArray)

不过,我不确定这有多好。

票数 67
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14230145

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档