我正在研究角度js。
我对多个二进制数据的按位和操作有疑问(二进制数据数组[" 1"," 100"," 10000",&# 34; 10"。])
在我的HTML页面中有一个包含多个复选框的字段。每个复选框的值均为1,2,4,8,16,32.存储在数据库中。 在我对该特定html页面的控制器中,我将这些转换为二进制数据并存储在一个数组中。[" 1"," 100"," 10000" " 10"]
因此,如果我检查字段的3个值(例如...... 1,4,16 ..),这些值的相应二进制数据数组应该执行二进制和操作,并根据我必须存储的结果它在数据库中的十进制值。
请帮我解决这个问题。
答案 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