登录
首页 >  Golang >  Go问答

从字节数组中提取字符串值并转换为字节数组

来源:stackoverflow

时间:2024-03-02 15:57:27 169浏览 收藏

Golang不知道大家是否熟悉?今天我将给大家介绍《从字节数组中提取字符串值并转换为字节数组》,这篇文章主要会讲到等等知识点,如果你在看完本篇文章后,有更好的建议或者发现哪里有问题,希望大家都能积极评论指出,谢谢!希望我们能一起加油进步!

问题内容

我正在尝试对一些解码代码进行基准测试。我已经打印了编码字节数组,因此我可以在测试文件中对其进行硬编码,以分离出编码部分。

因此我有 fmt.println() 一个字节数组

buf := bytes.buffer{}
enc := gob.newencoder(&buf)
err := enc.encode()
if err != nil {
    log.fatal(err)
}
bytequads := buf.bytes()
buf.reset()
fmt.println(bytequads) // << [77 255 129 3 1 1 7 82...]
// or
fmt.println(string(bytequads[:])) // << m��...

问题:如何再次将这个硬代码读入字节数组([]byte)

b := []byte(???) // [77 255 129 3 1 1 7 82...] or M��
gob.NewDecoder(bytes.NewReader(b))

正确答案


如果您的目标是使用测试数据创建 composite literal,请在 fmt.printf 中使用 %#v 格式动词:

buf := bytes.buffer{}
enc := gob.newencoder(&buf)
err := enc.encode()
if err != nil {
    log.fatal(err)
}
fmt.printf("var testdata = %#v\n", buf.bytes())  
// prints var testdata = []byte{0x1f, 0xff, …

此代码打印一行文本,您可以将其直接粘贴到 go 源文件中。

如果您的目标是一遍又一遍地重复使用编码数据,请执行以下操作:

buf := bytes.buffer{}
enc := gob.newencoder(&buf)
err := enc.encode()
if err != nil {
    log.fatal(err)
}
b := buf.bytes() // reuse this slice of bytes to create decoders.

⋮

dec := gob.newdecoder(bytes.newreader(b))
// do something with the decoder

⋮

// create another decoder on the same data.
dec = gob.newdecoder(bytes.newreader(b))

您可以对切片使用构造函数语法。让我们举个例子:

array := []int{1, 2, 3}

python 中的等效项是:

array = [1, 2, 3]

文中关于的知识介绍,希望对你的学习有所帮助!若是受益匪浅,那就动动鼠标收藏这篇《从字节数组中提取字符串值并转换为字节数组》文章吧,也可关注golang学习网公众号了解相关技术文章。

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>