0

我正在 Clojure 中开发 MQTT 服务器。我使用Gloss来解析二进制数据。但是,我坚持使用Variable Byte Integer,不知道如何为此创建编解码器。我的直觉认为它应该header以某种方式使用框架,但我不知道如何将它组合在一起。所以我的问题是: 1. 是否可以将其表示为 Gloss 编解码器,或者我应该使用其他方法?2. 能否请您为此提供编解码器?谢谢!

4

2 回答 2

1

阅读文档,您似乎需要定义一些新的东西来处理 VBI 编码。

由于 Gloss 似乎只期望固定长度的表示,因此您的算法可能需要在开始时接受带有 VBI 的字节块,然后解码 VBI 并返回

  1. 解码值
  2. 剩余字节

然后可以将(2)中的字节正常输入到 Gloss 中。如果 VBI 不是整个输入中的第一项,您可以使用 Gloss 或任何其他方式去除任何前导字节。

于 2021-06-27T18:31:11.247 回答
0

最终为 Gloss 创建自定义编解码器https://github.com/selentium/clj-mqtt/blob/master/src/clj_mqtt/varint.clj

于 2021-07-04T15:28:22.763 回答