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

Javascript 为什么fromCharCode()返回亚洲字符?,javascript,Javascript,我正在做一个编码挑战,需要将一串二进制代码转换成文本。当经过这个 01000001 011110010 011001001101 01101110 00100111 011101100 0010000001100110111111 01101110 011001110 011001110 011001101001 011110010 011001100101 011110011 00100000011010 011010 01110101 011101101110 00100001 001111

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

01000001 011110010 011001001101 01101110 00100111 011101100 0010000001100110111111 01101110 011001110 011001110 011001101001 011110010 011001100101 011110011 00100000011010 011010 01110101 011101101110 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");
函数二进制代理(str){
var codedStr=str.split(“”).map(编号),
decodedStr=“”;
对于(变量i=0;i

有人能解释为什么会发生这种情况吗?

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

尝试将
(String.fromCharCode(codedStr[i]))更改为
(String.fromCharCode(parseInt(codedStr[i],2))


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

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

尝试将
(String.fromCharCode(codedStr[i]))更改为
(String.fromCharCode(parseInt(codedStr[i],2))

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

试试这个:

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");
函数二进制代理(str){
var codedStr=str.split(“”).map(编号),
decodedStr=“”;
对于(变量i=0;i
试试这个:

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");
函数二进制代理(str){
var codedStr=str.split(“”).map(编号),
decodedStr=“”;
对于(变量i=0;i
您已经使用了这个代码字符串。fromCharCode(parseInt(codedStr[i],2)

函数二进制代理(str){
var codedStr=str.split(“”).map(编号),
decodedStr=“”;
//console.log(codedStr)
对于(变量i=0;iconsole.log(二进制代理(“01000001 011110010 011001101 01101101110 00100111 011101100 00100000011010 01101101111 011011001110 011011001001 011110010 01100101101101101101100100000011010 01101101101101101101101101110 00100100001 00111111”)
您已经使用了这个代码字符串

函数二进制代理(str){
var codedStr=str.split(“”).map(编号),
decodedStr=“”;
//console.log(codedStr)
对于(变量i=0;iconsole.log(二进制代理(“01000001 011110010 011001101 01101101110 00100111 011101100 00100000011010 011011011111 01101110 011011010 011001001001 011110010 011011001110011 00100000011010 011010101 01101101101110 00100100001 00111111”)
,因为当您将字符串转换为数字(
.map(Number)
)您没有指定字符串是二进制的。
.map(Number)
…映射到一些大的数字-也许您是想解析基数2?
.map(x=>parseInt(x,2))
相反,您需要将
parseInt
与基数2一起使用
'01000001 011110010 011001100101 01101110 00100111 011101100 0010000001100110 01101101101110 011011001001 011110010 011001001110011 00100000011010 011110101 011010 00111001 00111111'。拆分(“”)。映射(x=>parseInt(x,2)).map(String.fromCharCode)。连接(“”)
答案就在这里:尝试检查您使用的方法的文档,您会看到它们期望的数据格式。因为当您将字符串转换为数字(
.map(Number)
)时,您没有指定字符串是二进制的。
.map(Number)
…映射到一些大的数字-也许你想解析整数基数2?
.map(x=>parseInt(x,2))
相反,您需要将
parseInt
与基数2一起使用
'01000001 011110010 011001100101 01101110 00100111 011101100 0010000001100110 01101101101110 011011001001 011110010 011001001110011 00100000011010 011110101 011010 00111001 00111111'。拆分(“”)。映射(x=>parseInt(x,2)).map(String.fromCharCode)。连接(“”)
答案就在这里:尝试检查您使用的方法的文档,您将看到他们期望的数据格式。