给定基数的整数转换

Integer conversion to given base

我想将任何正整数转换为从 29 的某个基数。 base 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 功能可以有效地做到这一点?如果不是,如何优化上述解决方案?

如果 left-hand 参数是一个数字,vs 函数会执行此操作。

例如:

2 vs 100

将return:

1 1 0 0 1 0 0

如果您将 0 作为 right-hand 参数,那么它会 return 一个空列表,但是您可以用一个条件包装它,在以下情况下输出 ,0 returned 值为空。