gpt4 book ai didi

c - 如何将字节缓冲区中以 null 结尾的字符串转换为 Go 中的字符串?

转载 作者:IT王子 更新时间:2023-10-29 01:10:14 26 4
gpt4 key购买 nike

这个:

label := string([]byte{97, 98, 99, 0, 0, 0, 0})
fmt.Printf("%s\n", label)

这样做(^@ 是空字节):

go run test.go 
abc^@^@^@

最佳答案

这个函数隐藏在 Go 的系统调用包中,它找到第一个空字节 ([]byte{0}) 并返回长度。我假设它的 C 长度称为 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) 的索引的字节 slice .

结果将是长度为 3 的 abc

关于c - 如何将字节缓冲区中以 null 结尾的字符串转换为 Go 中的字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12359777/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com