按位并对角度js中的多个二进制数据进行操作

时间:2015-08-26 18:19:24

标签: javascript bit-manipulation

我正在研究角度js。

我对多个二进制数据的按位和操作有疑问(二进制数据数组[" 1"," 100"," 10000",&# 34; 10"。])

在我的HTML页面中有一个包含多个复选框的字段。每个复选框的值均为1,2,4,8,16,32.存储在数据库中。 在我对该特定html页面的控制器中,我将这些转换为二进制数据并存储在一个数组中。[" 1"," 100"," 10000" " 10"]

因此,如果我检查字段的3个值(例如...... 1,4,16 ..),这些值的相应二进制数据数组应该执行二进制和操作,并根据我必须存储的结果它在数据库中的十进制值。

请帮我解决这个问题。

1 个答案:

答案 0 :(得分:0)

首先将字符串转换为整数,其中parseInt和基数为2.

然后按位OR将它们打包成一个整数。

var bits = ["1","100","10000","10"].map(function (x) {
    return parseInt(x, 2);
});

var result = bits.reduce(function (accumulator, curr) {
    return accumulator | curr;
});

//result is now 23 which is the decimal representation of binary  1  0  1   1   1
//-------------------------------------------------------------- 16 +0 +4  +2  +1