Groovy 选中复选框';这是基于一个数字
我有8个复选框,它们的值分别为Groovy 选中复选框';这是基于一个数字,groovy,checkbox,binary,Groovy,Checkbox,Binary,我有8个复选框,它们的值分别为1,2,4,16,256,512,1024,4096 取决于选择的内容取决于我得到的数字,即:5=1和4被选择,20=16和4,528=512和16 现在我了解了如何通过手动计算或创建地图来找出选中的复选框。即 [ { number: 1, boxes: [1] }, { number: 2, boxes: [2] }, { number: 3, boxes: [1,2] }, { number: 4, boxes: [4] }, { numb
1
,2
,4
,16
,256
,512
,1024
,4096
取决于选择的内容取决于我得到的数字,即:5=1和4被选择,20=16和4,528=512和16
现在我了解了如何通过手动计算或创建地图来找出选中的复选框。即
[
{ number: 1, boxes: [1] },
{ number: 2, boxes: [2] },
{ number: 3, boxes: [1,2] },
{ number: 4, boxes: [4] },
{ number: 5, boxes: [4,1] },
{ number: 6, boxes: [4,2] },
{ number: 7, boxes: [4,2,1] }
]
但这不是我想要的
- 为了更好地理解这一点,您会搜索什么主题/短语
- 在代码中,如何根据 出示的号码
从大于参数的下一个值2的倍数开始,然后减去其他倍数。对你的案子有用吗
def getCheckBoxList(int number) {
def list = []
Integer filter = 1
while(filter < number) { filter *= 2 }
filter /= 2
while (filter != 0) {
if (filter <= number) {
list << filter
number -= filter
}
filter /= 2
}
list
}
assert getCheckBoxList(1536) == [1024,512]
assert getCheckBoxList(7) == [4,2,1]
assert getCheckBoxList(17) == [16, 1]
assert getCheckBoxList(15) == [8, 4, 2, 1]
assert getCheckBoxList(29) == [16, 8, 4, 1]
assert getCheckBoxList(528) == [512, 16]
def getCheckBoxList(整数){
def列表=[]
整数过滤器=1
而(filter 如果(filter)这是什么语言/平台?Java/Groovy/C#,任何都可以,示例中的代码都是Groovy。非常感谢,这正是我所寻找的,也请看,最终这就是我试图使用枚举和位运算符实现的。
def getCheckBoxList(int number) {
def list = []
Integer filter = 1
while(filter < number) { filter *= 2 }
filter /= 2
while (filter != 0) {
if (filter <= number) {
list << filter
number -= filter
}
filter /= 2
}
list
}
assert getCheckBoxList(1536) == [1024,512]
assert getCheckBoxList(7) == [4,2,1]
assert getCheckBoxList(17) == [16, 1]
assert getCheckBoxList(15) == [8, 4, 2, 1]
assert getCheckBoxList(29) == [16, 8, 4, 1]
assert getCheckBoxList(528) == [512, 16]