我想在JavaScript中將一個整數(我知道它將在0和32之間)轉換爲0和1的數組。我環顧四周,但找不到東西的作品..Javascript - 將整數轉換爲數組
所以,如果我有一個整數爲22(二進制10110),我想訪問它:
Bitarr[0] = 0
Bitarr[1] = 1
Bitarr[2] = 1
Bitarr[3] = 0
Bitarr[4] = 1
有什麼建議? 非常感謝
我想在JavaScript中將一個整數(我知道它將在0和32之間)轉換爲0和1的數組。我環顧四周,但找不到東西的作品..Javascript - 將整數轉換爲數組
所以,如果我有一個整數爲22(二進制10110),我想訪問它:
Bitarr[0] = 0
Bitarr[1] = 1
Bitarr[2] = 1
Bitarr[3] = 0
Bitarr[4] = 1
有什麼建議? 非常感謝
轉換基數爲二:
var base2 = (yourNumber).toString(2);
訪問字符(位):
base2[0], base2[1], base2[3], etc...
太棒了,這個作品非常好!我正在考慮年齡的移位操作,但速度要快得多。非常感謝!! – DimC 2012-03-31 10:01:21
U寫了「位數組」,所以---> var base2 =(yourNumber).toString(2).split(''); <---會給你一個數組中的每個字符(字符串,你仍然需要parseInt)。 – sebilasse 2014-05-11 14:08:34
圓括號中包含_yourNumber_的是什麼?如果我運行'var base2 = 5.toString(2);'它不起作用,所以我很好奇......謝謝! – 2015-12-18 04:41:26
這應該做
for(int i = 0; i < 32; ++i)
Bitarr[i] = (my_int >> i) & 1;
我喜歡這個解決方案 – 2012-03-31 09:40:11
var a = 22;
var b = [];
for (var i = 0; i < 5; i++)
b[i] = (a >> i) & 1;
alert(b);
假設5位(它從你的問題似乎),所以0 <= a < 32
。如果你喜歡,你可以使5
更大,直到32
(JavaScript中的偏移轉換可以使用32位整數)。
您可以將整數轉換爲這樣的二進制字符串。請注意基本2參數。
var i = 20;
var str = i.toString(2); // 10100
您可以訪問字符的字符串,就好像它是一個數組:
alert(str[0]); // 1
alert(str[1]); // 0
etc...
此外,該代碼給出32length陣列
function get_bits(value){
var base2_ = (value).toString(2).split("").reverse().join("");
var baseL_ = new Array(32 - base2_.length).join("0");
var base2 = base2_ + baseL_;
return base2;
}
1 => 1000000000000000000000000000000
2 => 0100000000000000000000000000000
3 => 1100000000000000000000000000000
這給出長度爲31的字符串。第三行應該是: var baseL_ = new Array(33 - base2_.length).join(「0」); – Sam 2015-07-10 12:28:21
以前的答案構建:你可能希望你的數組是一個整數數組,而不是字符串,所以這裏是一行代碼:
(1234).toString(2).split('').map(function(s) { return parseInt(s); });
注意,即較短的版本,(11).toString(2).split('').map(parseInt)
將無法正常工作(鉻),對未知的我的理由是"0"
S轉換到NaN
小號
'map(parseInt)'不起作用,因爲'Array.prototype.map(')爲其回調提供了3個參數,其中第二個參數是_index_。 'parseInt()'需要2個參數,其中第二個參數是_radix_。 – 2016-11-21 11:01:15
'''(11).toString(2).split('')。map(val => parseInt(val))''' – 2017-05-06 04:54:45
你可能會做如下;
var n = 1071,
b = Array(Math.floor(Math.log2(n))+1).fill()
.map((_,i,a) => n >> a.length-1-i & 1);
console.log(b);
比特它不是一個字節的數組。而一個0和1的數組可能只是一個int數組。 – GolezTrol 2012-03-31 09:37:20