这:label := string([]byte{97, 98, 99, 0, 0, 0, 0})fmt.Printf("%s\n", label)这样做(^@是空字节):go run test.go abc^@^@^@
3 回答
呼如林
TA贡献1798条经验 获得超3个赞
Go的syscall程序包中隐藏了此函数,该函数查找第一个空字节([] byte {0})并返回长度。我假设它被称为C-Length的clen。
抱歉,我迟到了一年,但是我认为它比其他两个要简单得多(没有不必要的输入等)。
func clen(n []byte) int {
for i := 0; i < len(n); i++ {
if n[i] == 0 {
return i
}
}
return len(n)
}
所以,
label := []byte{97, 98, 99, 0, 0, 0, 0}
s := label[:clen(label)]
fmt.Println(string(s))
^的意思是设置s为label从头到索引处的字节片clen(label)。
结果将为abc3。
- 3 回答
- 0 关注
- 164 浏览
添加回答
举报
0/150
提交
取消