Javascript 为什么fromCharCode()返回亚洲字符?
我正在做一个编码挑战,需要将一串二进制代码转换成文本。当经过这个 01000001 011110010 011001001101 01101110 00100111 011101100 0010000001100110111111 01101110 011001110 011001110 011001101001 011110010 011001100101 011110011 00100000011010 011010 01110101 011101101110 00100001 00111111 我明白了 䉁쥅촶蜏蚠죪촷촶쥎쳉쥅蚠쥎촶蚡눇 而不是拉丁字符 这是我的函数Javascript 为什么fromCharCode()返回亚洲字符?,javascript,Javascript,我正在做一个编码挑战,需要将一串二进制代码转换成文本。当经过这个 01000001 011110010 011001001101 01101110 00100111 011101100 0010000001100110111111 01101110 011001110 011001110 011001101001 011110010 011001100101 011110011 00100000011010 011010 01110101 011101101110 00100001 001111
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;i console.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;i console.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)。连接(“”)
答案就在这里:尝试检查您使用的方法的文档,您将看到他们期望的数据格式。