2017-03-07 79 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