Javascript 我有十进制数,需要转换成二进制,并有一个复选框链接到该二进制数的每一位

Javascript 我有十进制数,需要转换成二进制,并有一个复选框链接到该二进制数的每一位,javascript,jquery,html,plc,Javascript,Jquery,Html,Plc,这很难解释,但我会尽力的 我正在使用一个带有Web服务器的PLC和一些我编写的javascript代码,将PLC寄存器中的值写入您的网页 PLC的功能之一是您知道的时间表,例如,您可以选择灯必须亮起的日期和时间。为了设置时间表,我为时间创建了一些输入框,并为一周中的每一天创建了7个复选框。您必须将十进制值发送到控制器,这在小时和分钟内没有问题 然而,工作日是由一个二进制数表示的,但是我需要将它以十进制形式写入控制器 所以我有7个复选框,每个代表一个二进制数字,所以星期一是1,星期二是2,星期三是

这很难解释,但我会尽力的

我正在使用一个带有Web服务器的PLC和一些我编写的javascript代码,将PLC寄存器中的值写入您的网页

PLC的功能之一是您知道的时间表,例如,您可以选择灯必须亮起的日期和时间。为了设置时间表,我为时间创建了一些输入框,并为一周中的每一天创建了7个复选框。您必须将十进制值发送到控制器,这在小时和分钟内没有问题

然而,工作日是由一个二进制数表示的,但是我需要将它以十进制形式写入控制器

所以我有7个复选框,每个代表一个二进制数字,所以星期一是1,星期二是2,星期三是4,星期四是8,等等,所以当我想从中创建一个十进制数时,很简单,只需将选中的复选框相加,就可以了

但现在我需要它的另一种方式,这一次我得到一个十进制数,表示从控制器设置的日期,我需要在复选框上表示这一点,所以可能会将十进制转换为二进制,但如何将复选框链接到单个数字

希望有人能理解这一点,并帮助我

<input type="checkbox" id="mon"></td>
<input type="checkbox" id="tue"></td>
<input type="checkbox" id="wed"></td>
<input type="checkbox" id="thu"></td>
<input type="checkbox" id="fri"></td>
<input type="checkbox" id="sat"></td>
<input type="checkbox" id="sun"></td>
我该怎么做呢?我得到一个十进制数,需要转换成二进制,并使用javascript根据设置的位选中正确的复选框


有什么建议吗?

数字的二元分解:

 function getOnesAndZeroesFromInt(weekdays){
     var tab = [];
     for(var i=0; i<7; i++){
         tab[i] = weekdays % 2;
         weekdays /=  2;
     }
     return tab
 }

数字的二元分解:

 function getOnesAndZeroesFromInt(weekdays){
     var tab = [];
     for(var i=0; i<7; i++){
         tab[i] = weekdays % 2;
         weekdays /=  2;
     }
     return tab
 }

可以使用位运算符

比如说

var number = 54;
if (number & 1) { $('#mon').attr('checked', 'checked'); }

if (number & 2) { $('#tue').attr('checked', 'checked'); }

if (number & 4) { $('#wed').attr('checked', 'checked'); }

if (number & 8) { $('#thu').attr('checked', 'checked'); }

if (number & 16) { $('#fri').attr('checked', 'checked'); }

等等。

您可以使用位运算符

比如说

var number = 54;
if (number & 1) { $('#mon').attr('checked', 'checked'); }

if (number & 2) { $('#tue').attr('checked', 'checked'); }

if (number & 4) { $('#wed').attr('checked', 'checked'); }

if (number & 8) { $('#thu').attr('checked', 'checked'); }

if (number & 16) { $('#fri').attr('checked', 'checked'); }

等等。

这对我来说非常有效,是我认为最有效的代码@chead23 thx man;这对我来说非常有效,是我认为最有效的代码@chead23 thx man;感谢您提供的解决方案,但chead23的解决方案对我的应用程序来说效率更高一点,谢谢,非常感谢:D感谢该解决方案,但chead23的解决方案对我的应用程序来说效率更高一点,谢谢,非常感谢:D
var number = 54;
if (number & 1) { $('#mon').attr('checked', 'checked'); }

if (number & 2) { $('#tue').attr('checked', 'checked'); }

if (number & 4) { $('#wed').attr('checked', 'checked'); }

if (number & 8) { $('#thu').attr('checked', 'checked'); }

if (number & 16) { $('#fri').attr('checked', 'checked'); }
let yourNumber = 343234729;
let decomposed = yourNumber.toString(2).split('').reverse().map((bit, index) => bit === '1' ? 1 << index : 0).filter(x => x > 0);