我需要读取[100]byte
来传输一堆string
数据。
因为并不是所有的string
都是100个字符,所以byte array
的其余部分用0
s填充。
如果我通过:string(byteArray[:])
将[100]byte
转换为string
,尾部的0
将显示为^@^@
s。
在C中,string
将在0
上终止,那么在Go中将此byte array
转换为string
的最佳方法是什么?
发布于 2013-01-09 15:24:39
将数据读入字节片的方法返回读取的字节数。您应该保存该数字,然后使用它来创建字符串。如果n
是读取的字节数,您的代码将如下所示:
s := string(byteArray[:n])
要转换完整的字符串,可以使用以下命令:
s := string(byteArray[:len(byteArray)])
这相当于:
s := string(byteArray[:])
如果由于某些原因您不知道n
,那么可以使用bytes
包来查找它,假设您的输入中没有嵌入空字符。
n := bytes.Index(byteArray[:], []byte{0})
或者,正如icza所指出的,您可以使用以下代码:
n := bytes.IndexByte(byteArray[:], 0)
发布于 2013-09-04 21:52:34
使用:
s := string(byteArray[:])
发布于 2016-11-02 16:57:14
过于简单的解决方案:
str := fmt.Sprintf("%s", byteArray)
不过,我不确定这有多好。
https://stackoverflow.com/questions/14230145
复制相似问题