代码之家  ›  专栏  ›  技术社区  ›  Optiq

为什么fromCharCode()返回亚洲字符?

  •  0
  • Optiq  · 技术社区  · 7 年前

    我正在做一个编码挑战,需要将一组二进制代码转换成文本。当通过这个

    01000001 0110010 01100101 011110 00111 011110 00111 0111100 0010000001100010 011110 011110 01100110 0111001 0110010 0110010 0110011 0010000001100110 011110 0111001 011110 00100001 00111111

    我明白了

    _______

    而不是拉丁字符。

    这是我的职责

    function binaryAgent(str) {
      var codedStr = str.split(" ").map(Number),
          decodedStr = "";
    
      for(var i = 0; i < codedStr.length; i++){
        decodedStr += (String.fromCharCode(codedStr[i]));
      }
      return decodedStr;
    }
    
    binaryAgent("01000001 01110010 01100101 01101110 00100111 01110100 00100000 01100010 01101111 01101110 01100110 01101001 01110010 01100101 01110011 00100000 01100110 01110101 01101110 00100001 00111111");
    

    有人能解释为什么会这样吗?

    3 回复  |  直到 7 年前
        1
  •  2
  •   Vahid Rahmani    7 年前

    您已使用此代码字符串。FromCharCode(ParseInt(codedstr[i],2)

    function binaryAgent(str) {
      var codedStr = str.split(" ").map(Number),
        decodedStr = "";
      // console.log(codedStr)
      for (var i = 0; i < codedStr.length; i++) {
        // binaryCode.push(String.fromCharCode(parseInt(newBinary[i], 2)));
        decodedStr += (String.fromCharCode(parseInt(codedStr[i], 2)));
      }
      return decodedStr;
    }
    
    console.log(binaryAgent("01000001 01110010 01100101 01101110 00100111 01110100 00100000 01100010 01101111 01101110 01100110 01101001 01110010 01100101 01110011 00100000 01100110 01110101 01101110 00100001 00111111"))
        2
  •  1
  •   Quirzo    7 年前

    您必须先将二进制转换为十进制,然后再转换为整数值。

    尝试改变 (String.fromCharCode(codedStr[i])) (String.fromCharCode(parseInt(codedStr[i], 2)))

    这首先将二进制字符串转换为十进制值。“2”表示它的两个数字系统(二进制)。

        3
  •  0
  •   n1md7    7 年前

    试试这个:

    function binaryAgent(str) {
      var codedStr = str.split(" ").map(Number),
          decodedStr = "";
    
    
      for(var i = 0; i < codedStr.length; i++){
        decodedStr += String.fromCharCode(parseInt(codedStr[i], 2));
    
      }
      return decodedStr;
    }
    
    binaryAgent("01000001 01110010 01100101 01101110 00100111 01110100 00100000 01100010 01101111 01101110 01100110 01101001 01110010 01100101 01110011 00100000 01100110 01110101 01101110 00100001 00111111");