我正在 Clojure 中开发 MQTT 服务器。我使用Gloss来解析二进制数据。但是,我坚持使用Variable Byte Integer,不知道如何为此创建编解码器。我的直觉认为它应该header
以某种方式使用框架,但我不知道如何将它组合在一起。所以我的问题是: 1. 是否可以将其表示为 Gloss 编解码器,或者我应该使用其他方法?2. 能否请您为此提供编解码器?谢谢!
问问题
125 次
2 回答
1
阅读文档,您似乎需要定义一些新的东西来处理 VBI 编码。
由于 Gloss 似乎只期望固定长度的表示,因此您的算法可能需要在开始时接受带有 VBI 的字节块,然后解码 VBI 并返回
- 解码值
- 剩余字节
然后可以将(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 回答