2017-03-07 80 views
0

我正在处理一段代码以将文本转换为二进制文件。首先,我将文本转换为十进制,然后将小数转换为二进制。我得到的问题是在'decimalToBinary'函数中,它告诉我“Uncaught TypeError:无法读取未定义的属性'toString',有人可以解释什么是错的吗?文本到二进制JS

function start() { 
    var text = readLine("Input the string you would like to encode: "); 
    var binary = textToBinary(text); 
    println(binary); 
} 

function textToBinary(text) { 
    var toASCII = []; 
    var toBINARY = []; 
    text.toUpperCase(); 
    for (var i = 0; i < text.length; i++) { 
     var ASCII_CODE = text.charCodeAt(i); 
     toASCII.push(ASCII_CODE); 
    } 
    for (var j = 0; j < toASCII.length; i++) { 
     var arrnum = toASCII[i] 
     var final = decimalToBinary(arrnum); 
     toBINARY.push(final); 
    } 
    return toBINARY; 
} 

function decimalToBinary(decimalValue) { 
    var binaryBase = 2; 
    var numBitsDesired = 8; 
    var binaryValue = decimalValue.toString(binaryBase); 
    while (binaryValue.length < numBitsDesired) { 
     binaryValue = "0" + binaryValue; 
    } 
    return binaryValue; 
} 

回答

2

你在你的代码已经有些错别字:

function textToBinary(text){ 
    var toASCII = []; 
    var toBINARY = []; 
    text.toUpperCase(); 
    for(var i = 0 ; i < text.length ; i++){ 
     var ASCII_CODE = text.charCodeAt(i); 
     toASCII.push(ASCII_CODE); 
    } 
    for(var j = 0 ; j < toASCII.length ; i++){ // <- This should be j++ instead of i++ 
     var arrnum = toASCII[i] // <- Same here; j instead of i (i is off limits). 
     var final = decimalToBinary(arrnum); 
     toBINARY.push(final); 
    } 
    return toBINARY; 
} 

通过访问与非法索引的数组(出界),你得到的undefined值。

+1

谢谢!当我在同一个函数中使用两个for循环时,这似乎总是我的问题! – Layne