Kdb 整数到给定基的转换
我想将任何正整数从Kdb 整数到给定基的转换,kdb,q-lang,Kdb,Q Lang,我想将任何正整数从2转换为9。 基本2的输出应为: 0 -> enlist 0 1 -> enlist 1 31 -> 1 1 1 1 1 62 -> 1 1 1 1 1 0 63 -> 1 1 1 1 1 1 64 -> 1 0 0 0 0 0 0 我为此开发了下一个函数 convertToBase: reverse {[x;base;result] result,: `int$x mod base; x-: last result
2
转换为9
。
基本2
的输出应为:
0 -> enlist 0
1 -> enlist 1
31 -> 1 1 1 1 1
62 -> 1 1 1 1 1 0
63 -> 1 1 1 1 1 1
64 -> 1 0 0 0 0 0 0
我为此开发了下一个函数
convertToBase: reverse {[x;base;result]
result,: `int$x mod base;
x-: last result;
x%: base;
$[x=0;result;.z.s[x;base;result]]
};
//invocation
convertToBase[62;2;()]
问题是,是否有任何内置的
Q
函数可以有效地执行此操作?如果不是,如何优化上述解决方案?如果左侧参数是数字,则vs函数会执行此操作
例如:
2 vs 100
将返回:
1 1 0 0 1 0 0
但是,如果右参数为0,则返回一个空列表,但如果返回值为空,则可以使用输出0的条件对其进行包装。谢谢。你使用哪个版本的Q。我尝试了3.2和3.3,得到了
'nyi
。是3.4吗?我目前正在使用kdb+3.4 2016.06.14,是的。直到最近我才有机会使用这个习惯用法,所以我从来没有在旧版本上测试过。对于kdb+版本,从3.x升级到3.4是安全的,不需要在旧版本上测试