整数转换为给定的基数

时间:2017-01-19 09:35:29

标签: 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函数可以有效地执行此操作吗?如果没有,如何优化上述解决方案?

1 个答案:

答案 0 :(得分:3)

如果左侧参数是数字,vs函数会执行此操作。

例如:

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<select name="speed" id="ddlCustomer" class="form-control select-basic">
    <optgroup label="CustomerId&nbsp;&nbsp;OrderDate&nbsp;&nbsp;&nbsp;&nbsp;SupplyDate &nbsp;&nbsp;&nbsp;&nbsp;Supplier">
    <option value="1011_2">1011&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;2015-12-18 &nbsp;&nbsp;&nbsp;2015-12-22&nbsp;&nbsp;&nbsp;ABC</option>
        <option value="1011_2">1034&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;2015-12-23 &nbsp;&nbsp;&nbsp;2015-12-28&nbsp;&nbsp;&nbsp;XYZ</option>
    </optgroup>
</select>

将返回:

2 vs 100

如果右手参数为0,它将返回一个空列表,但是如果返回值为空,则可以使用条件输出0来包装它。