如何将分配给数字值的字母表用于位掩码

时间:2015-11-16 18:23:05

标签: javascript bitwise-operators bit-shift

我正在尝试将字母序列分配给位掩码数值,如此

 1: a
 2: b
 4: c
 8: d
 .....
 2^25: z

我正在寻找一个可以帮助我推断转换的函数,当我选择c和d时,它应该返回一个12的数字,即4 + 8。

我写了一个函数,虽然从这个值中推断出了这个字母,但我现在需要反过来,对此有何帮助?我不太确定有点明智的操作

例如,

var Mask = 5;
var String = "";
var index;
for (index = 0; index < 26; index++) {
    if (Mask & (1 << index)) {
        var letter = String.fromCharCode(65 + index); 
        String += driveLetter;
    }
}
alert(String);

1 个答案:

答案 0 :(得分:1)

它非常简单:

var mask = 0;
var string = "cd";
for (var i=0; i<string.length; i++) {
    var c = string.charCodeAt(i) - 65;
    if (i < 0 || i >= 26) throw new SyntaxError("invalid character: "+string[i]);
    mask = mask | (1 << c); // 12
}
console.log(mask);