我在这里想做的是:我有一个来自Kafka流的转储,其中以二进制格式存储了未知数量的photobuff记录。我想解码它们并以JSON格式逐个打印到控制台。我已经浏览了整个互联网,但似乎没有明确的答案,从原始二进制文件中读取数据,其中包含未知数量的photobuff记录。我发现了这个:如何解码二进制/原始谷歌protobuf数据,但它与使用protoc对一个已知记录的简单解码有关
我已经尝试了以下内容,但我似乎并不完全了解如何使用proto.buffer.go结构,因为我只能看到所有26 kb数据中的第一个值。
package main
import (
"encoding/json"
"fmt"
"github.com/golang/protobuf/proto"
"io/ioutil"
"parseRawDHCP/pb"
)
func main() {
file, err := ioutil.ReadFile("file")
if err != nil {
fmt.Printf("unable to read file %v", err)
}
msg := pb.Msg{}
buffer := proto.NewBuffer(file)
for {
err := buffer.DecodeMessage(&msg)
if err != nil {
panic("unable to decode message")
}
marshalledStruct, err := json.Marshal(msg)
if err != nil {
panic("can't marshalledStruct the data from message")
}
if err == nil {
fmt.Printf("message is: %v", marshalledStruct)
continue
}
}
}
如果有人能为我指出如何正确地将原始二进制解码为原型,我将不胜感激。
交互式爱情
相关分类