javascript - 如何从十六进制字符串构建二进制数组

标签 javascript arrays bit-manipulation

我对二进制级别的数据处理概念很陌生,希望有人可以帮助我......

我想用一系列表示为字符串的十六进制数字构建一个二进制缓冲区。

例如,

假设我有“xFCx40xFF”,我想将其转换为一个如下所示的数组:111111000100000011111111

最好的方法是什么?

我的最佳尝试似乎不起作用:

var raw = "xFCx40xFF"
var end = raw.length-2;
var i = 1;
var j = 0;
var myArray = new Uint8Array(raw.len);
while (i < end) {
    var s = raw.substr(i,2);
    var num = parseInt(s,16);
    i += 3;
    myArray[j] = num;
    j += 8;
}

最佳答案

字符串中的每 3 个字符将代表 Uint8Array 中的 1 个数字。 Uint8Array 中的每个数字将代表 8 位。您的代码创建的 Uint8Array 大于所需的大小,然后将值放置在错误的位置。

我已经简化了代码以使用单个索引 i 来表示 Uint8Array 中的位置。字符串中的相应位置可以很容易地从 i 计算出来。

var raw = "xFCx40xFF"
var myArray = new Uint8Array(raw.length / 3);
for (var i = 0; i < raw.length / 3; i++) {
    var str = raw.substr(3 * i + 1, 2);
    var num = parseInt(str, 16);
    myArray[i] = num;
}

关于javascript - 如何从十六进制字符串构建二进制数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33572047/

相关文章:

c - 字符串不允许 float /十进制数

jquery 反向数组

c - 如何检查数字是否是位回文

c++ - 高阶位 - 丢弃它们并右移

javascript - 如何处理双击网页?

javascript - 如何在 React Native 中将褪色背景添加到堆栈图表

javascript - 根据另一个数组的值设置数组中键的值

java - 从二进制数据中提取某些位

javascript - Jquery触发器提交在chrome中不起作用

javascript - 如何将 Prop 传递给 react 组件?