我想将任何正整数转换为从 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。
关于kdb - 整数转换为给定基数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41738282/