Javascript 将字符串转换为二进制并返回

Javascript 将字符串转换为二进制并返回,javascript,character,Javascript,Character,我得到一个任务,将给定的字符串转换成二进制,然后再转换回字符串 第一部分很简单 函数字符串二进制(输入){ 变量字符=输入。拆分(“”); 返回字符.map(函数(char){ 返回char.charCodeAt(0).toString(2) }).加入(“”); } 警报(stringToBinary('test'))首先,您需要获取与转换回字符串的输入相同长度的转换字符串,获取长度为8且填充字符为零 函数字符串二进制(输入){ 变量字符=输入。拆分(“”); 返回字符 .map(函数(字

我得到一个任务,将给定的字符串转换成二进制,然后再转换回字符串

第一部分很简单

函数字符串二进制(输入){
变量字符=输入。拆分(“”);
返回字符.map(函数(char){
返回char.charCodeAt(0).toString(2)
}).加入(“”);
}

警报(stringToBinary('test'))
首先,您需要获取与转换回字符串的输入相同长度的转换字符串,获取长度为
8
且填充字符为零

函数字符串二进制(输入){
变量字符=输入。拆分(“”);
返回字符
.map(函数(字符){
返回char.charCodeAt(0).toString(2).padStart(8,0)
})
.join(“”);//用每个字节的空格显示
//观察前导零,前一个代码中缺少该值
}

console.log(stringToBinary('test'))
您的
stringToBinary
函数有问题。将一个字符转换为二进制只会让您得到最少的位。因此,您仍然需要将其转换为8位字符串

另一件事是,您只需从二进制文件中获取前8位数字,并在运行时对输入进行修剪,如下面的示例所示

函数字符串二进制(输入){
变量字符=输入。拆分(“”);
返回字符.map(函数(char){
const binary=char.charCodeAt(0).toString(2)
常量pad=Math.max(8-binary.length,0);
//只是为了确保它是8位长。
返回“0”。重复(pad)+二进制;
}).加入(“”);
}
函数二进制字符串(输入){
让bytesLeft=输入;
让结果=“”;
//检查我们是否还有一些字节
while(bytesleet.length){
//获取第一个数字
常量字节=bytesleeft.substr(0,8);
bytesleet=bytesleet.substr(8);
result+=String.fromCharCode(parseInt(字节,2));
}
返回结果;
}
常量二进制=stringToBinary(“测试”);

log(binaryToString(binary))我刚刚参与了exact项目,下面是从文本转换为二进制以及从二进制转换为文本的函数:

function binaryToTexttConverter(str) {
  let wordArray = [];
  let message = str.split(" ").map((stack) => {
    let numberArray = parseInt(stack, 2);
    let letters = String.fromCharCode(numberArray);
    wordArray.push(letters);
  });
  let output = wordArray.join("");
  console.log(output);
  return output;
}

// binaryToTexttConverter("test binary"); 

*****************************************************************

function textToBinaryConverter(str) {
  let xterCodesArray = [];
  let splitted = str.split("");
  for (i = 0; i < splitted.length; i++) {
    let xterCodes = splitted[i].charCodeAt(splitted[i]);
    xterCodesArray.push(xterCodes.toString(2));
  }
  console.log(xterCodesArray.join(" "));
  return xterCodesArray.join(" ");
}

// textToBinaryConverter("test string");
函数binarytotextconverter(str){
让wordArray=[];
let message=str.split(“”).map((堆栈)=>{
设numberArray=parseInt(堆栈,2);
让字母=String.fromCharCode(numberArray);
推送(字母);
});
让output=wordArray.join(“”);
控制台日志(输出);
返回输出;
}
//二进制TotextConverter(“测试二进制”);
*****************************************************************
函数文本到二进制转换器(str){
设xterCodesArray=[];
let splitted=str.split(“”);
对于(i=0;i
Thank you的可能副本!这真的很有帮助。我不知道我需要前导零。那么,您的解决方案希望我创建带空格的二进制字符串吗?不,它只是显示前导零和八个字符的长度。谢谢,这真的很有帮助!我不知道这里需要前导零。当你使用transpiler(如babel)或你不关心IE11时,你也可以使用
padStart
就像Nina Scholz的回答一样。