Protobuf 消息可以以 gzip 幻数开头吗?

daa*_*nee 4 gzip protocol-buffers

当我传输一条可选用gzip 压缩的Protobuf消息时,我是否可以相信如果该消息以 gzip 幻数 ( ) 开头,那么它就是压缩版本? 换句话说,Protobuf 消息是否有可能以 开头,因此我的检测方法会失败,因此我必须在前面添加一个标记标志来显式指示压缩?0x1f8b
0x1f8b

Mar*_*ell 5

十六进制 1f 是二进制 11111,用 protobuf varint/field-header 术语来说,它是一个单字节整数。字段标头的最低 3 位是线路类型,因此这将是线路类型 7。但是,没有线路类型 7。因此:hex 1f 不是有效的字段标头,因此不能是有效 protobuf 消息的第一个字节。

所以:如果你看到 gzip 幻数,它绝对不是看起来类似的 protobuf 消息。