Javascript-具有所有可能组合的字节字符串
Javascript - String of a Byte with all combinations possible
我有一个字符串,里面有一个字节("00001011"),现在我想得到一个数组,里面有1(acitve)"位"的所有可能组合,也可以作为"字节字符串"所以从
var bString="00001011"//传出字符串
到一个数组,其中包含所有字符串以及该"字节字符串"的所有可能组合,如-"00000001"、"00000011"、"0000010"等等
这可能吗?
提前感谢
function combinations( input ){
var number = parseInt( input, 2 );
var combinations = [];
var zeroes = (new Array(input.length)).join(0);
for(var i=1;i<=number;i++){
if((i&number) == i){ combinations.push( i ) }
}
return combinations.map( function(dec){
return (zeroes + dec.toString(2)).substr( -zeroes.length-1 );
});
}
http://jsfiddle.net/jkf7pfxn/3/
console.log( combinations("00001011") );
// ["00000001", "00000010", "00000011", "00001000", "00001001", "00001010", "00001011"]
其思想如下:将所有数字从1迭代到输入数字。如果当前数字AND输入数字返回当前数字,则两者在同一位置都具有1
位。
在较小的数字"0101"
(即5
)上,其工作原理如下:
1 & 5 == 1
(0001和0101)将1
推向比赛。
2 & 5 == 0
,(0010和0101)不匹配。
因此, 然后有一个用零填充数字的小技巧: 然后 由于 如果您想枚举 该算法适用于任意长度的CCD_ 233 & 5 == 1
,(0011和0104 & 5 == 4
(0100和0101)将4
推向比赛。5 & 5 == 5
(0101和0102)将5
推向比赛。0101
的组合是1
(0001
)、2
(0010
)、4
(0100
)和5
(0101
)。var zeroes = (new Array(input.length)).join(0); // gives a long enough string of zeroes
// convert to base 2, add the zeroas at the beginning,
// then return the last n characters using negative value for substring
return (zeroes + dec.toString(2)).substr( -1 * zeroes.length);
11111111
是255,所以只需循环所有值并将其转换为二进制$(document).ready(function() {
for (var i = 0; i < 256; i++) {
$('#core').append('<div>' + dec2bin(i) + '</div>');
}
function dec2bin(dec) {
return ('00000000' + (dec >>> 0).toString(2)).slice(-8);
}
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id='core'></div>
1
只能位于模式位置的所有二进制数组合,您可以编写一个简单的递归函数:var input = "00010111";
var current = [];
function combinations()
{
if (input.length === current.length)
{
var output = current.join('');
if (parseInt(output, 2) !== 0) // exclude all-zeroes case
document.body.innerHTML += output + "<br/>";
return;
}
current.push('0');
combinations();
current.pop();
if (input[current.length - 1] === '1')
{
current.push('1');
combinations();
current.pop();
}
}
combinations();
尽管它是一个递归,但它具有线性时间复杂性。
- 本地存储中的字符串到字节数组转换
- 将十六进制字符串转换为字节数组
- 如何使用Node.js将字节数组转换为字符串
- 如何在javascript中将字节数组转换为字符串
- 奇怪的日期()是用包含空字节的字符串创建的
- 将 base64 编码的字节转换为在 Javascript 和 C# 中不同的字符串
- 删除错误.MongooDB + Express.传入的参数必须是 12 个字节的单个字符串或 24 个十六进制字符的字符
- 从 IEEE 754 单精度(32 位)浮点(字符串表示)创建字节
- JavaScript:从图像中删除字节(base64 字符串)
- 字节到二进制字符串的 Javascript 数组
- Javascript:将对象强制转换为字节数组并转换为字符串
- javascript中字节数组到十六进制字符串的转换
- Javascript-具有所有可能组合的字节字符串
- JavaScript字节字符串和jQuery AJAX
- 将Data-URL转换为有效的字节字符串
- 如何将多字节字符串数组转换为32位整型数组
- Javascript数组返回到字节字符串
- 我如何将JavaScript浮点PCM音频数组转换为小端字节字符串
- Javascript如何搜索双字节字符串与单字节字符串,反之亦然
- 如何在Nodejs中写入字节字符串到文件