(我知道有一种更简单的方法可以转换为二进制文件,但是在我快完成此工作之前我不知道。所以我只是想尝试完成它。我对此进行了编码只是为了学习):) 我正在尝试创建一个将二进制转换为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代码时,它会正确输出。我很困扰。有人能帮我吗? -谢谢
(对不起,标题不好,或者我解释不好)
答案 0 :(得分:0)
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++) {