gpt4 book ai didi

Javascript - 位警报消息 - 获取所有可能的组合

转载 作者:行者123 更新时间:2023-12-03 09:04:25 25 4
gpt4 key购买 nike

我遇到的问题是我有一条以字节为单位的警报消息

示例:1) 0000 0001 - 是警报 12) 0000 0010 - 是警报 23) 0000 1000 - 是警报 34) 1000 0000 - 是警报4

所以问题是,如果警报 1 和警报 4 同时出现,则字节如下所示: 1000 0001 如果是警报 1、2 和 4,则字节如下: 1000 0011是否可以使用 JavaScript 函数获取警报的所有可能组合?

我知道只有 4 位,但这只是一个例子,我有一些全 8 位

提前谢谢

最佳答案

这样的事情可以通过“正常”位比较来获取所有位:

var val = 0b00000101;

function GetBits(val){
var i = 1, res = [];
while(i<=val){
if(i & val) res.push(i);
i <<=1;
}
return res;
}

console.log(GetBits(val));

但看起来好像使用了备用位掩码?

如果警报是数组中每个具有自定义掩码的对象,您可以使用过滤器:

var alarms = [
{descr: 'Alarm 1', mask : 1},
{descr: 'Alarm 2', mask : 2},
{descr: 'Alarm 3', mask : 0b1000},
{descr: 'Alarm 4', mask : 0b10000000}
];

var val = 0b10000011;

var alarmsInVal = alarms.filter(function(a){ return val & a.mask;});

console.log(alarmsInVal);

以及获取上述过滤值的字符串的示例:

var descr =  alarmsInVal.map(function(a){return a.descr;}).join(', '); //Alarm 1, Alarm 2, Alarm 4

关于Javascript - 位警报消息 - 获取所有可能的组合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32226457/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com