Binary Agents

Decrytion - Binary


  題意為將2進位值的資料轉換(translate)成英文句子,因為題目跟加解密(Encrypt or Decrypt)有關所以就稍微紀錄一下這部分

  function binaryAgent(str) {
  return str.split(' ').map(function(emt)
         { 
           return String.fromCharCode(parseInt(emt, 2)); 
         }).join('');
}

binaryAgent("01000001 01110010 01100101 01101110 00100111 
01110100 00100000 01100010 01101111 01101110 01100110 
01101001 01110010 01100101 01110011 00100000 01100110
01110101 01101110 00100001 00111111");

測試的正確結果

binaryAgent("01000001 01110010 01100101 01101110 00100111 01110100 00100000 01100010 01101111 01101110 01100110 01101001 01110010 01100101 01110011 00100000 01100110 01110101 01101110 00100001 00111111")
應該返回 "Aren't bonfires fun!?"
binaryAgent("01001001 00100000 01101100 01101111 01110110 01100101 00100000 01000110 01110010 01100101 01100101 01000011 01101111 01100100 01100101 01000011 01100001 01101101 01110000 00100001")
應該返回 "I love FreeCodeCamp!"

Solution:

題目給了一個相當長的字串,內容為2進位的數字(其實就是由字元轉換成的對應編碼值(UTF-16)),並且以空格連結各個編碼值,要做的事就是將這些二進位編碼值解密(Decrypt)成原本的訊息,我的做法就是先透過split()以空格將str分割成array,再用map去訪問陣列的每個元素,在訪問期間將二進位碼以parseInt(string, radix(An integer between 2 and 36 that represents the radix (the base in mathematical numeral systems) )),第1個參數為要解析的資料,第2個參數為要解析的數字(原本)的基數,也就是以哪個數字為底,例如一般電腦用二進位就是以2為base-二進位,而一般我們常在用的則是10為base-十進位(decimal),此radix值提供2~36為底的轉換,然後將此數轉回正常的十進位後,在使用String.fromeCharCode()來將編碼值轉回原本對應的字元,以符合加密(Encrypt)前的資料型態,然後再將結果串起來,即為題目所求



P.S. / Reference:  String.fromCharCode()
          JS-parseInt()

results matching ""

    No results matching ""