javascript - 在javascript中将字节数组转换为字符串

标签 javascript casting

如何将字节数组转换为字符串?

我发现这些函数做相反的事情:

function string2Bin(s) {
    var b = new Array();
    var last = s.length;

    for (var i = 0; i < last; i++) {
        var d = s.charCodeAt(i);
        if (d < 128)
            b[i] = dec2Bin(d);
        else {
            var c = s.charAt(i);
            alert(c + ' is NOT an ASCII character');
            b[i] = -1;
        }
    }
    return b;
}

function dec2Bin(d) {
    var b = '';

    for (var i = 0; i < 8; i++) {
        b = (d%2) + b;
        d = Math.floor(d/2);
    }

    return b;
}

但是如何让函数以其他方式工作呢?

谢谢。

最佳答案

您需要将每个八位字节解析回数字,并使用该值来获取字符,如下所示:

function bin2String(array) {
  var result = "";
  for (var i = 0; i < array.length; i++) {
    result += String.fromCharCode(parseInt(array[i], 2));
  }
  return result;
}

bin2String(["01100110", "01101111", "01101111"]); // "foo"

// Using your string2Bin function to test:
bin2String(string2Bin("hello world")) === "hello world";

编辑: 是的,您当前的 string2Bin 可以写得更短:

function string2Bin(str) {
  var result = [];
  for (var i = 0; i < str.length; i++) {
    result.push(str.charCodeAt(i).toString(2));
  }
  return result;
}

但是通过查看您链接的文档,我认为 setBytesParameter 方法期望 blob 数组包含十进制数,而不是位串,因此您可以写这样的东西:

function string2Bin(str) {
  var result = [];
  for (var i = 0; i < str.length; i++) {
    result.push(str.charCodeAt(i));
  }
  return result;
}

function bin2String(array) {
  return String.fromCharCode.apply(String, array);
}

string2Bin('foo'); // [102, 111, 111]
bin2String(string2Bin('foo')) === 'foo'; // true

关于javascript - 在javascript中将字节数组转换为字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3195865/

相关文章:

javascript - 如何使用 CSS 或 Javascript 将 <image> 作为背景居中?

java - 在 Java 中将 List<Object[]> 转换为 Object[][]

c# - 为什么这是一个无效的类型转换?

在 C 中转换数字数据类型

c++ - 最佳实践 : Passing a Vector of a Derived Class to a Method on a Vector of a Base Class

javascript - iframe.src 属性中的 "javascript:"、 "#"和 "javascript:false"有什么区别

javascript - jQuery 使用方法 replaceWith() 替换输入占位符

javascript - 在 Atom Electron 中使用 Express

javascript - 刷新 div 中的图像

将 ((DWORD) 0xFFFFFFFF) 转换为单精度 float 而不更改二进制值