javascript - 使用二进制压缩 boolean 数组

标签 javascript arrays node.js binary boolean

我想知道是否有一种方法可以让我有效地存储 boolean 数组。以我的理解,JavaScript 中的每个 boolean 变量都需要 1 个字节或 8 位来存储。但是,如果我要存储一个 boolean 值的数组,实际上 8 位最多可以存储 8 个 boolean 值。剩下的 7 位被浪费了。

在C或Java等语言中,人们可以使用“>>”、“~”等位操作将 boolean 数组存储为一个int值。但是,这在 JavaScript 中效果不佳,因为它在 JavaScript 中运行得非常慢,因为它需要将 float 转换为 int ( See this question )。

我还注意到 JavaScript 中的 Buffer 直接存储二进制数据。但是,我找不到用它来存储 boolean 数组的方法。我认为 Buffer 更专注于编码的东西。例如,如果我想将 boolean 数组的第五位设置为真,我可以做 data |= 1<<4但我无法在 Buffer 中找到这样做的方法。

有什么解决办法吗?

最佳答案

You can use a Bit-Vector implementation :

var bs = new BitSet;
bs.set(128, 1); // Set bit at position 128
console.log(bs.toString(16)); // Print out a hex dump with one bit set

关于javascript - 使用二进制压缩 boolean 数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36829860/

相关文章:

javascript - 保持日期选择器粘在文本字段上

javascript - 使用javascript确认后如何滚动到页面上的 anchor

javascript - javascript中的 "!~"是什么意思

PHP : echo Multidimensional Array

javascript - 开发两个独立的 Node 应用程序来提供 Web 服务和使用 Web 服务以在浏览器上呈现它是一个好主意吗?

javascript - 类型错误 : callback is not a function -

javascript - 用于强制特殊标题格式的正则表达式

javascript - 将属性添加到 React Native 对象数组

javascript - 删除数组中不存在的索引元素上的运算符行为?

node.js - 如何使用 mocha chai 测试异步服务器代码?