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

标签 javascript character

我接到一个任务,将给定的字符串转换为二进制,然后再次转换回字符串。

第一部分很简单

function stringToBinary(input) {
  var characters = input.split('');

  return characters.map(function(char) {
    return char.charCodeAt(0).toString(2)
  }).join('');
}

alert(stringToBinary('test'))

但是我无法理解如何将结果字符串分解为字节。到目前为止我尝试过:

function binaryToString(input) {
  var bits = input.split('');
  
  var byte = '';
  return bits.map(function(bit) {
    byte = byte + bit;
    
    if (byte.length == 8) {
      var char = byte; // how can I convert this to a character again?
      byte = '';
      return char;
    }
    
    return '';
  }).join('');
}

alert(binaryToString('1110100110010111100111110100'));

如何将字节再次转换为字符?而且感觉也有点奇怪。有没有更好、更快的方法来收集这些字节

最佳答案

您的 stringToBinary 函数有问题。将字符转换为二进制只会留下最少的位数。所以你仍然需要将其转换为8位字符串。

另一件事是,您可以从二进制文件中获取前 8 位数字,并随时 trim 您的输入,如下例所示。

function stringToBinary(input) {
  var characters = input.split('');

  return characters.map(function(char) {
    const binary = char.charCodeAt(0).toString(2)
    const pad = Math.max(8 - binary.length, 0);
    // Just to make sure it is 8 bits long.
    return '0'.repeat(pad) + binary;
  }).join('');
}

function binaryToString(input) {
  let bytesLeft = input;
  let result = '';

  // Check if we have some bytes left
  while (bytesLeft.length) {
    // Get the first digits
    const byte = bytesLeft.substr(0, 8);
    bytesLeft = bytesLeft.substr(8);

    result += String.fromCharCode(parseInt(byte, 2));
  }

  return result;
}

const binary = stringToBinary('test');
console.log({
  binary,
  text: binaryToString(binary),
});

关于javascript - 将字符串转换为二进制并返回,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53247588/

相关文章:

regex - 新函数中的无效字符范围错误

java - 如何在Java中更改 'character set'?

javascript - CouchDB 在时间戳内获取结果

javascript - 当我为不同的条件设置不同的 if 语句时,为什么只输出一个 if 语句?

javascript - 如何调整左浮动 div 以适应右浮动 DIV?

javascript - 如何将js变量从ajax传递到内部ajax?

javascript - 是否可以为不同的 Node 脚本同时使用不同版本的 Node

c - 有没有更好的方法来查找一个字符在 C 中的数组或字符串中出现的次数?

SQL 左/分隔字符

Java 字符串——比较 charAt() 和索引运算符 []