检查标志是否设置为大整数
Check if flags are set in big integer
我有两个标志“32”和“64”,需要检查它们是否包含在整数变量中。
因此我使用了以下代码,它可以很好地处理“小整数”。例如,如果整数变量是“33555378”,它会输出正确的结果。
现在我遇到的问题是整数变量是“12261800583900083122”,脚本似乎无法正常工作。
如何检查标志是否正确设置为大整数?
这是JSFiddle.
代码:
var flags = {
Horde: 32,
Allianz: 64,
}
var flag = 12261800583900083122;
if ((flag & flags.Horde) == flags.Horde && (flag & flags.Allianz) == flags.Allianz) {
console.log('Both');
} else if ((flag & flags.Allianz) == flags.Allianz) {
console.log('Allianz');
} else if ((flag & flags.Horde) == flags.Horde) {
console.log('Horde');
} else {
console.log('Nothing');
}
我认为对 flags
和 flag
使用 BigInt
(在数字后添加 n
)可以解决您的问题;
var flags = {
Horde: 32n,
Allianz: 64n,
}
var flag = 12261800583900083122n;
if ((flag & flags.Horde) == flags.Horde && (flag & flags.Allianz) == flags.Allianz) {
console.log('Both');
} else if ((flag & flags.Allianz) == flags.Allianz) {
console.log('Allianz');
} else if ((flag & flags.Horde) == flags.Horde) {
console.log('Horde');
} else {
console.log('Nothing');
}
结果为 Horde
。
我有两个标志“32”和“64”,需要检查它们是否包含在整数变量中。
因此我使用了以下代码,它可以很好地处理“小整数”。例如,如果整数变量是“33555378”,它会输出正确的结果。
现在我遇到的问题是整数变量是“12261800583900083122”,脚本似乎无法正常工作。
如何检查标志是否正确设置为大整数?
这是JSFiddle.
代码:
var flags = {
Horde: 32,
Allianz: 64,
}
var flag = 12261800583900083122;
if ((flag & flags.Horde) == flags.Horde && (flag & flags.Allianz) == flags.Allianz) {
console.log('Both');
} else if ((flag & flags.Allianz) == flags.Allianz) {
console.log('Allianz');
} else if ((flag & flags.Horde) == flags.Horde) {
console.log('Horde');
} else {
console.log('Nothing');
}
我认为对 flags
和 flag
使用 BigInt
(在数字后添加 n
)可以解决您的问题;
var flags = {
Horde: 32n,
Allianz: 64n,
}
var flag = 12261800583900083122n;
if ((flag & flags.Horde) == flags.Horde && (flag & flags.Allianz) == flags.Allianz) {
console.log('Both');
} else if ((flag & flags.Allianz) == flags.Allianz) {
console.log('Allianz');
} else if ((flag & flags.Horde) == flags.Horde) {
console.log('Horde');
} else {
console.log('Nothing');
}
结果为 Horde
。