【发布时间】:2021-02-13 06:31:13
【问题描述】:
我找到了一种将 1 数转换为二进制数的方法。
function dec2bin(dec){
return (dec >>> 0).toString(2);
}
如何实现一种方法,该方法采用 3 个参数(或更多参数,如果可能)并将它们转换为一个二进制数。
例如:
使用参数加密用户
- 年龄(最高255-> 11111111)
- 休假次数(最多 15-> 1111)
- 是否在度假(1 或 0)
创建(30, 13, 1);
预计将 3 个堆叠在一起 (00011110) (1101) (1): 0001111011011
【问题讨论】:
-
不知道为什么要用
(dec >>> 0).toString(2),什么时候可以用dec.toString(2)。 -
您应该“告诉”函数如何中断输入,就像您在问题的 text 中所做的那样:8, 4, 1 (255, 15, 1)。因此,传递/硬编码具有“或更多”二进制长度的数组。那么这将是一件简单的事情,只需大约一行代码......
-
如果'dec'不是十进制,不是数字,负数,大于某个阈值(255,15,1,?)怎么办?
-
借用下面的答案 (@Lemondoge):
function dec2bin(dec, digits) { if(typeof(dec)=="number" && dec%1==0 && dec>=0 and dec<Math.pow(2, digits)) return dec.toString(2).padStart(digits, "0"); return undefined; } -
那么你可以使用:
function encrypt(userDetailsArray, encriptDigitsArray) { if(userDetailsArray.length<=encriptDigitsArray.length) return userDetailsArray.map((detail, index)=>dec2bin(detail, encriptDigitsArray[index])).join(""); return undefined; }
标签: javascript binary bit-manipulation bitwise-operators