我对二进制级别的数据处理概念很陌生,希望有人可以帮助我......
我想用一系列表示为字符串的十六进制数字构建一个二进制缓冲区。
例如,
假设我有“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/