Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/163.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 解码protobuf有线格式_C++_C_Protocol Buffers_Protobuf Net - Fatal编程技术网

C++ 解码protobuf有线格式

C++ 解码protobuf有线格式,c++,c,protocol-buffers,protobuf-net,C++,C,Protocol Buffers,Protobuf Net,我试图理解一个protobuf编码的消息。下面给出了消息,它显然是一个64字节长的散列值,但我无法理解编码过程 0000 12 01 40 30 37 62 65 37 36 30 34 32 33 35 32 37 0010 33 30 64 64 63 37 38 35 39 39 38 39 34 66 31 31 0020 37 65 30 37 34 35 36 61 37 64 30 37 66 62 36 31 0030 64 39 38 32 31 62 32 36

我试图理解一个protobuf编码的消息。下面给出了消息,它显然是一个64字节长的散列值,但我无法理解编码过程

0000  12 01 40 30 37 62 65 37 36 30 34 32 33 35 32 37 
0010  33 30 64 64 63 37 38 35 39 39 38 39 34 66 31 31 
0020  37 65 30 37 34 35 36 61 37 64 30 37 66 62 36 31
0030  64 39 38 32 31 62 32 36 61 38 33 34 61 34 30 66 
0040  64 62 38          
左边的16位十六进制值只是偏移量,它不是数据的一部分


第一个字节表示以下为字节或字符串导线类型,第二个字节表示字节或字符串数组中只有一个字节。第三个字节0x40必须是字段的长度,即64。我无法理解它是如何被解码的。我没有用来编码信息的原始文件

我想你需要看看protobuf的源代码。当然,假设protobuf编码不是单向函数(很可能是单向函数,因为proto文件是算法的另一半),那么应该可以从那里对其进行反向工程。我在精神上试图评估变量时感到头痛。@RichardHodges我没有用于编码的原始文件message@unwind我已经看过了。。。“protoc”工具有一种模式,在这种模式下,它将接受一个没有模式的编码输入,并显示一个最佳猜测解码“raw”或“decode”之类的东西。你试过吗?否则,只需通过mabuakky或使用任何阅读器API来检查字段。突然想到一个问题:作者是否在实际protobuf有效负载之前包含前缀(用于帧目的)-如果是这样,第一个字节可能不是消息的一部分。