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

时间:2015-11-06 17:10:46

标签: javascript arrays bit-manipulation

我对使用二进制级数据的概念不熟悉,并希望有人可以帮我一把......

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

例如,

假设我有“ xFCx40xFF ”,我想把它变成一个看起来像这样的数组: 111111000100000011111111

最好的方法是什么?

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

appcfg.py: error: Error parsing ./app.yaml: the library "django-widget-tweaks" is not supported

2 个答案:

答案 0 :(得分:0)

字符串中的每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;
}

答案 1 :(得分:0)

删除十六进制字符串的“x”字符,并使用基数parseInt()和基数16 toString()调用2以获取二进制字符串。

var raw = "xFCx40xFF";
var bin = parseInt(raw.split('x').join(''), 16).toString(2);
document.body.textContent = bin;

如果你需要一个数组,只需在最后添加.split('')。

parseInt(raw.split('x').join(''), 16).toString(2).split('');

或遍历每个角色。