0

我有许多 protobuf 文件,但没有 .proto 模式文件!

cat myfile.pbuf | protoc --decode_raw > outputfile.txt

使用上面的命令,我能够将文件解码为有点可读的 protobuf 格式(谢谢):

1: 1
2: ""
2 {
  1: 0x40133f7ced916873
  2: 0x3ff70e5604189375
  3: 0xbfd23d70a3d70a3d
  4: 0x3fb999999999999a
}
2 {
  1: 0x4022e7ef9db22d0e
  2: 0x4006ed916872b021
  3: 0xbfe1cac083126e98
  4: 0x3fc999999999999a
}
2 {
  1: 0x402bdcac083126e9
  2: 0x40111374bc6a7efa
  3: 0xbfe9fbe76c8b4396
  4: 0x3fd3333333333333
}
2 {
  1: 0x40324147ae147ae1
  2: 0x401696872b020c4a
  3: 0xbff0e147ae147ae1
  4: 0x3fd999999999999a
}
...

我知道没有模式我无法知道这些值的含义,但我想知道是否还有其他方法可以推断出这种奇怪之处!protobuf 文档似乎表明数字数据以 2 或 4 字节块的形式提供,我可以轻松地将其转换为整数或浮点数。

我的数据不适合这种格式,但我知道它是数字数据!我从未见过带有十六进制x表示法的 protobuf 文件,并且有 16 个字节(对于单个数字来说太多了!)。

这可能是什么数据类型,是否可以在没有模式的情况下进行解码和进一步解码,是否1, 2, 3, 4有用或重要?

4

1 回答 1

0

这些十六进制值实际上是 8 个字节,而不是 16 个。因此,可以想象这些值可能是 int64s、uint64s 或 double。1、2、3 和 4 似乎是重复消息中的字段编号。除了手动检查数据并尝试猜测含义之外,没有简单的方法可以进一步解码。

于 2017-05-25T16:06:56.680 回答