Compression 如何使用kdb(32位)解压缩消息?

Compression 如何使用kdb(32位)解压缩消息?,compression,kdb,Compression,Kdb,我正在尝试解压缩kdb中通过Deflate compression优化的消息,即以下消息: 0xab562a494cca4955b2522a2e4f2cd0cf4d2cca8e2f28ca4c4e55d2514a492c4954b28aae56cacc2b2e292acd4dcd2b89cf4c012a750a71d60d0d76d10d0e770c00aa43d264a56462606a68ac6709142ec9cc4d2d2e49cc2d00ea30323032d4350022cb1043

我正在尝试解压缩kdb中通过Deflate compression优化的消息,即以下消息:

0xab562a494cca4955b2522a2e4f2cd0cf4d2cca8e2f28ca4c4e55d2514a492c4954b28aae56cacc2b2e292acd4dcd2b89cf4c012a750a71d60d0d76d10d0e770c00aa43d264a56462606a68ac6709142ec9cc4d2d2e49cc2d00ea30323032d4350022cb1043732b230b2b23333d2323a328a5dad85a00
如何在kdb中实现这一点?
谢谢

我认为这里最简单的选择是通过使用zlib Python库

字节字符串被传递到decompress函数,并找到Deflate设置。在Python中,它返回一个bytes对象,因此我们可以使用UTF-8将其解码为Python字符串,最后一个backtick(`)指定我们希望它作为q类型(也是一个字符串)返回

然后,我们可以使用.j.k将其从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")

我认为这里最简单的选择是通过使用zlib Python库

字节字符串被传递到decompress函数,并找到Deflate设置。在Python中,它返回一个bytes对象,因此我们可以使用UTF-8将其解码为Python字符串,最后一个backtick(`)指定我们希望它作为q类型(也是一个字符串)返回

然后,我们可以使用.j.k将其从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")

马克,谢谢你的回答。马克,谢谢你的回答。