[英]Having problems with for loop and arrays
(我知道有一種更簡單的方法可以轉換為二進制文件,但在完成此工作之前我不知道。因此,我將嘗試完成此工作。我對此進行了編碼只是為了學習):)我正在嘗試創建將二進制轉換為ASCII代碼的函數。 這是我從二進制轉換為數字的方式:
function fromBinaryToNumber(num) {
let numbers = num.split('') //turns the binary into an array
let firstIndexWith1;
let numbersToAdd = [];
let result;
//Delete 0's at start of array
for (i = 0; i < numbers.length; i++) {
numbers[i] = parseInt(numbers[i], 10);
}
firstIndexWith1 = numbers.indexOf(1);
numbers.splice(0, firstIndexWith1);
//Convert
let checkAgainstThese = [128, 64, 32, 16, 8, 4, 2, 1];
checkAgainstThese = checkAgainstThese.slice(checkAgainstThese.length - numbers.length, checkAgainstThese.length);
//put numbers to add in array
for (i = 0; i < numbers.length; i++) {
if (numbers[i] === 1) {
numbersToAdd.push(checkAgainstThese[i]);
}
}
//add numbers
result = numbersToAdd.reduce((a, b) => a + b, 0);
return result;
}
有用。 但是我希望能夠一次轉換多個字節。 這就是我要這樣做的方式:
function fromBinaryToASCII(sentence) {
let convertThis = sentence.split(' ');
let result = [];
for (i = 0; i < convertThis.length; i++) {
result.push(fromBinaryToNumber(convertThis[i]));
}
return result;
}
我已經制作了一個函數,可以成功地將一個句子轉換為二進制,並且由於某種原因,一個函數可以運行,但不能運行,即使它們看起來非常相似。
因此,我試圖找出問題所在,然后嘗試將console.log放入for循環中並打印出i。 像這樣:
for (i = 0; i < convertThis.length; i++) {
result.push(fromBinaryToNumber(convertThis[i]));
console.log(i);
}
並且由於某種原因,它僅輸出數字6。當我刪除result.push代碼時,它會正確輸出。 我很困擾。 有人能幫我嗎? -謝謝
(對不起,標題不好,或者我解釋不好)
for(i=0; i<convertThis.length; i++) { <-- global i
for(i=0; i<numbers.length; i++) { <-- global i
一個運行時,它將更改另一個的編號。...這就是為什么var
不是可選的。 所以要么使用let要么var
for(let i=0; i<convertThis.length; i++) {
for(let i=0; i<numbers.length; i++) {
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.