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

Javascript 如何从十六进制字符串构建二进制数组,javascript,arrays,bit-manipulation,Javascript,Arrays,Bit Manipulation,我对在二进制级别处理数据的概念还不熟悉,希望有人能帮我一把 我想用一系列表示为字符串的十六进制数构建一个二进制缓冲区 比如说, 假设我有“xFCx40xFF”,我想把它转换成一个数组,看起来像:1111110001000000111111 最好的方法是什么 我最好的尝试似乎不起作用: var raw = "xFCx40xFF" var end = raw.length-2; var i = 1; var j = 0; var myArray = new Uint8Array(raw.len);

我对在二进制级别处理数据的概念还不熟悉,希望有人能帮我一把

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

比如说,

假设我有“xFCx40xFF”,我想把它转换成一个数组,看起来像:1111110001000000111111

最好的方法是什么

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

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;
}
var raw=“xFCx40xFF” var end=原始长度-2; var i=1; var j=0; var myArray=新的Uint8Array(raw.len); while(i字符串中的每3个字符将代表UINT8数组中的1个数字。UINT8数组中的每个数字将代表8位。您的代码创建的Uint8Array比需要的大,然后将值放置在错误的位置

我简化了代码,使用了表示Uint8Array中位置的单索引I。字符串中的相应位置可以很容易地从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;
}
var raw=“xFCx40xFF” var myArray=新的Uint8Array(raw.length/3); 对于(变量i=0;i字符串中的每3个字符将代表UINT8数组中的1个数字。UINT8数组中的每个数字将代表8位。您的代码创建的Uint8Array比需要的大,然后将值放置在错误的位置

我简化了代码,使用了表示Uint8Array中位置的单索引I。字符串中的相应位置可以很容易地从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;
}
var raw=“xFCx40xFF” var myArray=新的Uint8Array(raw.length/3); 对于(变量i=0;i删除十六进制字符串的“x”字符,并使用基数
16
调用
parseInt()
,使用基数
2
调用
toString()
,以获取二进制字符串

var raw=“xFCx40xFF”;
var-bin=parseInt(原始分割('x')。连接(''),16)。toString(2);

document.body.textContent=bin
删除十六进制字符串的“x”字符,并用基数
16
调用
parseInt()
,用基数
2
调用
toString()
,以获取二进制字符串

var raw=“xFCx40xFF”;
var-bin=parseInt(原始分割('x')。连接(''),16)。toString(2);

document.body.textContent=bin我喜欢这个解决方案中的聪明,但它对真正长的十六进制字符串不起作用我喜欢这个解决方案中的聪明,但对真正长的十六进制字符串不起作用