如何解码 .Java 文件中的协议缓冲区字符串

How To Decode Protocol Buffer String in .Java file

我到处找名字来称呼它,但我找不到任何.... 它在一个朋友发给我的 .java 文件中(他认为我会直接解码它),不知道我也是这个菜鸟.... 这是我想在不编译 Java 文件的情况下解码的字符串数据。

String[] descriptorData = {
  "\n0com/google/javascript/jscomp/function_" +
  "info.proto2[=11=]6jscomp\"7[=11=]2\n6FunctionInformati" +
  "onMap23\n[=11=]5entry0[=11=]1 [=11=]3(\n2$.jscomp.FunctionIn" +
  "formationMap.Entry25\n[=11=]6module0e [=11=]3(\n2%.jsc" +
  "omp.FunctionInformationMap.Module27[=11=]1\n[=11=]5En" +
  "try2\n\n[=11=]2id0[=11=]2 [=11=]2([=11=]523\n3source_name0[=11=]3 [=11=]2(\t23\n3" +
  "line_number0[=11=]4 [=11=]2([=11=]523\n3module_name0[=11=]5 [=11=]2(\t24" +
  "\n[=11=]4size0[=11=]6 [=11=]2([=11=]524\n[=11=]4name0[=11=]7 [=11=]2(\t27\n7compiled_s" +
  "ource00 [=11=]2(\t2/\n[=11=]6Module24\n[=11=]4name0f [=11=]2(\t27\n7c" +
  "ompiled_source0g [=11=]2(\tB \n4com.google.javas","cript.jscompP[=11=]1"

如果我没记错的话,你看到的是一段自动生成的代码,描述了

message FunctionInformationMap {
  repeated group Entry = 1 {
    required int32 id = 2;
    required string source_name = 3;
    required int32 line_number = 4;
    required string module_name = 5;
    required int32 size = 6;
    required string name = 7;
    required string compiled_source = 8;
  }
}

到了 https://github.com/google/closure-compiler/blob/master/src/com/google/javascript/jscomp/function_info.proto

这里生成的代码可以在这里找到,例如

https://code.google.com/p/closure-compiler/source/browse/gen/com/google/javascript/jscomp/FunctionInfo.java?name=v20140407

Ps:我只是用谷歌搜索 "com/google/javascript/jscomp/function_info.proto" 但实际上您可以逆转该过程。例如这里的提示 https://www.sysdream.com/reverse-engineering-protobuf-apps

我通过使用 System.Out.PrintIn 将字符串数据打印到 TXT 文件来简单地解决了这个问题...

就是这样.. 谢谢...