我想知道是否有一种方法可以让我有效地存储 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/