kdb+q脚本如何对字符串进行编码-解码

问题描述 投票:-2回答:1

我想在q脚本中对一个字符串进行编码解码,Q.x10、Q.j10、Q.x12和.Q.j12似乎不符合要求,例如,我想对 "Hello world "进行编码,我应该能够进一步解码。

kdb
1个回答
0
投票

你的问题是默认的.Q.j10和.Q.x10不允许使用空格字符。" " 因为使用的默认字母中没有空格字符。

q).Q.j10
64/:?["ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"]

如果你看一下官方文档中的 "提示 "评论: https:/code.kx.comqrefdotq#qj10-encode-binhex。

你会看到他们建议创建你自己的.Q.j10.Q.x10函数,其中空格字符是你自定义字母表的第一个字符。但你的字母表仍然只能是64个字符,所以你必须去掉你的字母表中的 +/ (或者用其他自己选择的字符代替它们)。

在2019年8月16日的k4主题箱上也出现了类似的问题(主题为 "b64编码"),Geo Carncross提出了这个b64解码的解决方案。

q).Q.btoa"Hello World!"
"SGVsbG8gV29ybGQh"
q)
q){c:sum x="=";neg[c]_"c"$raze 256 vs'64 sv'0N 4#.Q.b6?x}"SGVsbG8gV29ybGQh"
"Hello World!"

不过我还没有测试过后者。

© www.soinside.com 2019 - 2024. All rights reserved.