Использование JavaScript для декодирования битовых значений - PullRequest
3 голосов
/ 30 апреля 2011

Учитывая следующую шкалу:

Mon = 64, Tue = 32, Wed = 16, Thu = 8, Fri = 4, Sat = 2, Sun = 1

Как бы вы создали функцию, которой передается целое число для декодирования соответствующих дней недели?

Например, например, передано значение 127, как определить, какие дни включены в это значение?

Ответы [ 2 ]

5 голосов
/ 30 апреля 2011

Звучит как битовая маска. Вы можете прочитать о битовых масках здесь; http://en.wikipedia.org/wiki/Mask_%28computing%29

Воскресенье будет 1-м битом, Суббота 2-м и т. Д., Пн 7-го. Чтобы увидеть, включен ли день, используйте двоичное И.

var listOfDays = 127;
var hasSun = listOfDays & 1; 
var hasSat = listOfDays & 2;
var hasFri = listOfDays & 4;
// etc
4 голосов
/ 30 апреля 2011
function dec2bin(n) {
    return n.toString(2).split('');
}

А потом:

dec2bin(127) // returns ['1', '1', '1', '1', '1', '1', '1']

dec2bin(38) // returns ['1', '0', '0', '1', '1', '0']
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...