Javascript 对for循环和数组有问题
(我知道有更简单的方法可以转换成二进制,但在我几乎完成这个之前我不知道。所以我要试着完成这个。我编写这个只是为了学习):) 我正在尝试创建一个将二进制代码转换为ASCII代码的函数。以下是我如何从二进制转换为数字:Javascript 对for循环和数组有问题,javascript,arrays,for-loop,binary,Javascript,Arrays,For Loop,Binary,(我知道有更简单的方法可以转换成二进制,但在我几乎完成这个之前我不知道。所以我要试着完成这个。我编写这个只是为了学习):) 我正在尝试创建一个将二进制代码转换为ASCII代码的函数。以下是我如何从二进制转换为数字: function fromBinaryToNumber(num) { let numbers = num.split('') //turns the binary into an array let firstIndexWith1; let numbersToAdd =
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;
}
函数fromBinarytonNumber(num){
让numbers=num.split(“”)//将二进制文件转换为数组
让第一个索引为1;
让numbersToAdd=[];
让结果;
//删除数组开头的0
对于(i=0;ia+b,0);
返回结果;
}
它起作用了。但我希望能够一次转换多个字节。这就是我试图做到的:
function fromBinaryToASCII(sentence) {
let convertThis = sentence.split(' ');
let result = [];
for (i = 0; i < convertThis.length; i++) {
result.push(fromBinaryToNumber(convertThis[i]));
}
return result;
}
函数fromBinaryToASCII(句子){
让我们把这个=句子分开(“”);
让结果=[];
对于(i=0;ifor (i = 0; i < convertThis.length; i++) {
result.push(fromBinaryToNumber(convertThis[i]));
console.log(i);
}
for(i=0;i
出于某种原因,它只输出数字6。当我删除result.push代码时,它会正确输出。我很困惑。有人能帮我吗?
-谢谢
(很抱歉标题不好,或者如果我解释得不好)您能给出一个输入和预期输出的示例吗?我看不到您使用var,所以请享受全局变量相互覆盖的乐趣。每个for循环都使用
i
,您不需要删除i
,因此它们是相同的…有没有控制台错误?有没有特殊原因您不能只执行var binary=“101”;var dec=parseInt(binary,2)
?Tibrogargan,我发现我几个小时前就可以这么做了,是的。。我这样做只是为了学习
for(i=0; i<convertThis.length; i++) { <-- global i
for(i=0; i<numbers.length; i++) { <-- global i
for(let i=0; i<convertThis.length; i++) {
for(let i=0; i<numbers.length; i++) {