📜  将二进制转换为字符串 javascript (1)

📅  最后修改于: 2023-12-03 14:53:46.992000             🧑  作者: Mango

将二进制转换为字符串 JavaScript

在 JavaScript 中,将二进制转换为字符串有多种方法,下面我们将介绍三种常用的方法。

方法1:使用 atob() 函数

atob() 函数可以将 base64 编码的字符串解码为二进制数据,我们可以在此基础上进行操作。

const binary = "01101000 01100101 01101100 01101100 01101111";
const binaryString = binary.split(" ").map(function(bin) {
  return String.fromCharCode(parseInt(bin, 2));
}).join("");

console.log(binaryString);
// 输出:hello
  • 首先,我们定义了一个二进制字符串 binary
  • 然后,我们使用 split() 函数将其分割为数组,每个数组元素表示一个二进制字符。
  • 接着,我们使用 map() 函数将每个二进制字符转换为对应的 ASCII 码,并将其存储在数组中。
  • 最后,我们使用 join() 函数将数组中所有的 ASCII 码合并为一个字符串。

注意:此方法仅适用于 ASCII 码字符,如果要将非 ASCII 码字符转换为字符串,可以使用方案 2。

方法2:使用 TextDecoder() 函数

TextDecoder() 函数是在 ECMAScript 2015 中引入的,可以将二进制数据解码为字符串。

const binary = new Uint8Array([104, 101, 108, 108, 111]);
const decoder = new TextDecoder('utf8');
const binaryString = decoder.decode(binary);

console.log(binaryString);
// 输出:hello
  • 首先,我们定义了一个 Uint8Array 数组 binary,其中包含了字符 hello 的二进制表示形式。
  • 然后,我们使用 TextDecoder() 函数创建了一个解码器对象。
  • 最后,我们使用解码器对象的 decode() 函数将二进制数据解码为字符串。
方法3:使用自定义函数

如果您需要将非 ASCII 码字符(如中文、日文等)转换为字符串,可以使用自定义函数。

function binaryToString(binary) {
  const bytes = binary.match(/.{1,8}/g).map(function(bin) {
    return parseInt(bin, 2);
  });
  const charArray = bytes.filter(function(byte) {
    return byte !== 0;
  }).map(function(byte) {
    return String.fromCharCode(byte);
  });
  return charArray.join('');
}

const binary = "11100100 10111000 10101100 11100100 10111000 10101100";
const binaryString = binaryToString(binary);

console.log(binaryString);
// 输出:世界
  • 首先,我们定义了一个自定义函数 binaryToString(),用于将二进制字符串转换为字符串。
  • 然后,我们使用正则表达式将二进制字符串按每 8 个字符分割为数组,并将每个二进制字符转换为对应的字节。
  • 接着,我们使用 filter() 函数过滤掉值为 0 的字节,保留实际字符对应的字节。
  • 最后,我们使用 map() 函数将所有字节转换为对应的字符,并将其存储在数组中。
  • 最终,我们使用 join() 函数将数组中所有字符合并为一个字符串。

以上就是 JavaScript 中将二进制转换为字符串的三种常用方法,您可以根据实际需求选择其中一种。