当前位置: 首页 > 面试题库 >

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

葛昕
2023-03-14
问题内容

这个:

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

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

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

问题答案:

Go的syscall程序包中隐藏了该函数,该函数查找第一个空字节([] byte {0})并返回长度。我假设它被称为C-Length。

抱歉,我迟到了一年,但是我认为它比其他两个 简单得多(没有不必要的输入等)。

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))

^的意思是设置slabel从头到索引处的字节片clen(label)

结果将为abc3。



 类似资料:
  • 问题内容: 我需要阅读以传输一堆数据。 由于并非所有s的长度都恰好是100个字符,因此剩余的部分将用s 填充。 如果我将by 转换为:,则尾部s将显示为s。 在C中,will终止于,所以我想知道将其转换为Golang 的最佳方法是什么。 问题答案: 将数据读取到字节片中的方法返回读取的字节数。您应该保存该数字,然后使用它创建字符串。如果是读取的字节数,则代码将如下所示: 要转换完整的字符串,可以使

  • 问题内容: 我是Go的新手,正在尝试执行以下操作: 我搜索了很多,但真的不知道该怎么做。 我知道这行不通: 问题答案: 这不是实现它的最有效方法,但是您可以简单地编写: 被称为:

  • 如何将字符串(字节字符串)转换为字节(字节字符串),而不必手动复制和粘贴字符串并在其前面放置b?

  • 谁能让我知道如何在Java将protobuf字节字符串转换成字符串吗? 在我的例子中,我获得的字节字符串值为“\376\024\367”。有没有办法从bytestring中得到与String相同的东西?我的意思是,当我使用system.out.println()在控制台中打印字符串值时,我应该得到\376\024\367。 多谢。

  • 问题内容: 我想使用node.js进行HTTP请求以从Web服务器加载一些文本。由于响应可能包含很多文本(有些兆字节),因此我想分别处理每个文本块。我可以使用以下代码来实现: 这似乎没有问题。但是我想支持HTTP压缩,所以我使用zlib: 这可以是像多字节字符的问题,其由两个字节组成:和。如果第一个字节被第一个块()覆盖,第二个字节被第二个块覆盖,则将在文本块的结尾/开头产生不正确的字符。如何避免

  • 问题内容: 我想在GO中将字符串数组转换为字节数组,以便可以将其写到磁盘上。将字符串数组()解码为字节数组()的最佳解决方案是什么? 我正在考虑对字符串数组进行两次迭代,第一个迭代以获得字节数组所需的实际大小,然后第二个迭代写入每个元素的长度和实际字符串()。 解决方案必须能够以其他方式进行转换;从一个到一个。 问题答案: 让我们忽略一个事实,那就是走一秒钟。您需要做的第一件事是将序列化格式编组为