我对使用二进制级数据的概念不熟悉,并希望有人可以帮我一把......
我想用一系列表示为字符串的十六进制数来构建二进制缓冲区。
例如,
假设我有“ xFCx40xFF ”,我想把它变成一个看起来像这样的数组: 111111000100000011111111 。
最好的方法是什么?
我最好的尝试似乎不起作用:
appcfg.py: error: Error parsing ./app.yaml: the library "django-widget-tweaks" is not supported
答案 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('');
或遍历每个角色。