我必须将 30 多个标志 (0/1) 存储到一个整数中。我可以使用如下所示的按位运算符在 Javascript 中创建 30 个标志掩码
var FLAG_1 = 1 << 0; // 1
var FLAG_2 = 1 << 1; // 2
...
...
var FLAG_30 = 1 << 30;
var user1 = FLAG_1 | FLAG_16;
console.log(FLAG_1 & user1); // true
这很好用。但我无法创建超过 30 个标志,因为 1 << 31
相反(赞美或负数)。
有什么办法可以做到这一点吗?
最佳答案
是的。使用多个 32 位数字连接在一起。如果您知道需要少于 64 位数字,请使用两个 32 位数字。获取前 32 位并处理这些标志,然后分别获取第二个 32 位并处理这些标志。
var test = '0421';
for( var i=0; i < test.length; i += 2 ) {
flags = parseInt( test.substr(i,2), 10 );
console.log(flags);
// do comparisons here
// call function doStuff(i, flags)
}
我不确定您的初始输入值是多少。我从一个字符串开始,它可以是任意数量的 00 - 31 组。每个字符串都可以通过调用函数来完成工作、传递迭代器和标志来处理。
关于javascript - 在单个整数中存储 30 多个标志,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40860764/