compression - 如何使用 kdb(32 位)解压缩消息?
问题描述
我正在尝试解压缩通过 kdb 中的 Deflate 压缩优化的消息,即以下消息:
0xab562a494cca4955b2522a2e4f2cd0cf4d2cca8e2f28ca4c4e55d2514a492c4954b28aae56cacc2b2e292acd4dcd2b89cf4c012a750a71d60d0d76d10d0e770c00aa43d264a56462606a68ac6709142ec9cc4d2d2e49cc2d00ea30323032d4350022cb1043732b230b2b23333d2323a328a5dad85a00
应该如何在 kdb 中实现这一点?谢谢
解决方案
我认为这里最简单的选择是通过embedPy使用 zlib Python 库。
字节字符串通过此处的 Deflate 设置传递给解压缩函数。在 Python 中,这会返回一个字节对象,因此我们可以使用 UTF-8 将其解码为 Python 字符串,最后的反引号 (`) 指定我们希望将其作为 aq 类型(也是字符串)返回。
然后我们可以使用 .jk 将其从 JSON 字符串转换为 KDB 对象
q)\l p.q
q)zlib:.p.import`zlib
q)i:0xab562a494cca4955b2522a2e4f2cd0cf4d2cca8e2f28ca4c4e55d2514a492c4954b28aae56cacc2b2e292acd4dcd2b89cf4c012a750a71d60d0d76d10d0e770c00aa43d264a56462606a68ac6709142ec9cc4d2d2e49cc2d00ea30323032d4350022cb1043732b230b2b23333d2323a328a5dad85a00
q).j.k zlib[`:decompress][i;neg zlib[`:MAX_WBITS]`][`:decode;"utf-8"]`
table| "swap/mark_price"
data | +`instrument_id`mark_price`timestamp!(,"BTC-USD-SWAP";,"40513.9";,"2021-01-09T17:28:26.222Z")
推荐阅读
- excel - 后期绑定函数的问题
- firebase - Firebase:在开始交易之前检查参考是否存在是否足够好
- go - 如何找到 Go 模块源缓存?
- android - 使用新的 Android X 进行单元测试
- vba - 无法从规则中的代码重命名和删除附件
- java - 避免在基于工厂的通用 MVP 框架中进行强制转换
- windows - 在 notpad.exe PE 标头中找不到 AddressOfEntryPoint
- javascript - 如何在打字稿中描述一个简单的 Just 函子的接口?
- r - 如何在网格中绘制多个时间序列图,每个图都有两个 y 轴?
- python - TensorFlow Jupyter Notebook 中的 Matplotlib