kdb - 整数转换为给定基数

标签 kdb q-lang

我想将任何正整数转换为从 29 的某个基数。 基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/

相关文章:

kdb - 如何在 KDB 中编写多行查询?

kdb - 定义的命名空间中的字典分配失败

kdb - 在 KDB 中的列表比较期间等于不抛出错误

kdb - 如何扩展 Jupyter Lab 中的输出宽度?

kdb - 是否可以在不分配内存来保存序列化数据的情况下计算对象的序列化大小?

kdb - 如何保存具有不同文件名(KDB)的大文件?

database - 如何在 KDB 中连接展开表?

kdb - q - 使用 try catch 加载脚本

database - 使用外键创建 KDB+/Q 表

database - 如何使用 c.java 库获取 kdb 句柄