问题标签 [bitarray]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
7153 浏览

c# - BinaryReader - 读取单个“BIT”?

案例:
再次尝试通过我的 NIC 捕获数据包,
我开发了 2 个扩展用于捕获可变位数

问题 :

当我试图读取单个位时,但参考MSDN 文档
它将流位置提前 1 BYTE 而不是 1 BIT !!!

从当前流中读取一个布尔值并将流的当前位置前移一个字节

问题:
我真的可以“仅”捕获 1 位并将流位置提前 1 位吗?
请给我建议解决方案或想法:)

问候,

0 投票
2 回答
4859 浏览

c# - BitArray 到整数问题

有人可以解释一下为什么我的第二个返回值是 12 而不是 3?求求你了,谢谢你。

0 投票
2 回答
3618 浏览

python - Windows 上 Python 2.7 的 bitarray 包?

我需要一个易于在 32 位 Windows 上安装 Python 2.7 的 bitarray 版本,对于这个项目 py2exe 是不可能的,所以我需要一个易于安装的 exe / msi / egg,有人制作过这个吗?谷歌没有显示任何东西。

0 投票
5 回答
1447 浏览

c# - 快速创建 32 位哈希码,唯一标识由(大部分)原始值组成的结构

编辑:64 位或 128 位也可以。由于某种原因,我的大脑刚刚跳到 32 位,以为这就足够了。

我有一个结构,主要由数值(int、decimal)和 3 个字符串组成,每个字符串不超过 12 个字母字符。我正在尝试创建一个可以用作哈希码的整数值,并尝试快速创建它。一些数值也可以为空。

似乎 BitVector32 或 BitArray 将是用于此努力的有用实体,但我只是不确定如何在此任务中使它们符合我的意愿。我的结构包含 3 个字符串、12 个小数(其中 7 个可以为空)和 4 个整数。

为了简化我的用例,假设您有以下结构:

我知道我可以获得每个值的数字标识符。从数值的角度来看,MyDecimal 和 MyInt 当然是独一无二的。该字符串有一个 GetHashCode() 函数,该函数将返回一个通常唯一的值。

那么,每个都有一个数字标识符,是否可以生成一个唯一标识该结构的哈希码?例如,我可以每次比较 2 个包含相同值的不同 Foo,并获得相同的哈希码(无论应用程序域、重新启动应用程序、一天中的时间、木星卫星的对齐方式等)。

哈希将是稀疏的,因此我预计我的用例不会发生冲突。

有任何想法吗?我第一次运行它时,我将所有内容都转换为字符串表示形式,将其连接起来,并使用内置的 GetHashCode() 但这似乎非常……低效。

编辑:更多背景信息。结构数据被传递到 web 客户端,客户端对包含的值、字符串构造等进行大量计算以重新渲染页面。前面提到的 19 个字段结构代表一个信息单元,每个页面可以有多个单元。我想对渲染结果进行一些客户端缓存,因此如果我从服务器看到相同的哈希标识符,我可以快速重新渲染一个单元,而无需在客户端重新计算。JavaScript 数值都是 64 位的,所以我想我的 32 位约束是人为的和限制性的。64 位可以工作,或者如果我可以在服务器上将它分成两个 64 位值,我想甚至是 128 位。

0 投票
3 回答
1932 浏览

c++ - 为什么动态内存分配在 600MB 之后会失败?

我使用三维 char 数组实现了一个布隆过滤器(位表),它运行良好,直到它无法再分配内存并给出bad_alloc消息。它在分配 600MB 后的下一个扩展请求中给了我这个错误。

布隆过滤器(数组)预计会增长到 8 到 10GB。

这是我用来分配(扩展)位表的代码。

数组的最大允许大小是多少,如果这不是问题,我该怎么办。

编辑:它是使用 32 位平台开发的。

它在具有 8GB RAM 的 64 位平台(服务器)上运行。

0 投票
1 回答
532 浏览

c++ - 我在这个布隆过滤器实现中做错了什么?

我有一个分段布隆过滤器的位表。在这里,每一列都由一个哈希函数管理。

ROWS个散列函数,每个散列函数处理COLUMNS*8位的设置和检查。

元素被散列并且bit_indexbit被计算为

现在插入完成为

查询是

我的问题是布隆过滤器很快就满了,我怀疑我没有正确使用字符的各个位。例如,我想我应该有类似的东西:

bit_table_[i][bit_index][bit]|=bit_mask[bit];

对于插入,但是,由于bit_table被声明为二维数组,我不允许这样做。

我应该怎么做才能使用 char 数组的各个位?

英语是我的第二语言,所以你可能无法理解我的问题。如果需要,我很乐意进一步解释我的观点。

编辑: compute_hash(i,set_elemnt)使用预定义的盐值来计算要插入或查询的元素的哈希值。

0 投票
2 回答
3026 浏览

c# - C# 中的 Bitvector32 和 Bitarray

我想知道 Bitvector32 是否有在 O(1) 时间内运行的位运算符。我目前正在使用大尺寸的 BitArray 并使用按 O(位数组的大小)操作的按位与、或和非。

我在互联网上搜索了这个,但找不到答案。希望这里的人能帮忙!

0 投票
2 回答
1330 浏览

ruby - Ruby:将位数组转换为整数

我正在尝试转换位数组,例如[0,0,1,0].to_i = 2or [0,1,0,1].to_i = 5

在 Ruby 中有哪些可能的方法可以做到这一点?

0 投票
2 回答
1542 浏览

c# - 如何填充 BitArray 以便将其复制到字节中

请考虑将斜杠符号(例如 24、30)转换为子网掩码的这个(非家庭作业)练习。

当我将 a 复制BitArraybyte[]时,内部排序BitArray导致输出不正确。

例如,输入numberOfSetBits=24,ToString()应该返回255.255.255.0(这是有效的,因为位是对称的)。但是,30结果的输入255.255.255.63而不是预期的255.255.255.252。是的,我意识到这只是 BitArray 处理它的孩子的方式(有一个关于这个问题的旧讨论,不幸的是没有解决方案,只是关于为什么一个排序会更好的永无止境的争论)。

但是,看在上帝的份上,我怎样才能让这段代码按原样处理1111 1100(=252)而不是把它改成0011 1111(=63)?我相信我必须首先更改添加位的顺序,但我无法让它工作。

谢谢你。

0 投票
4 回答
477 浏览

python - Python中小集合的性能

我正在寻找最有效的方法来表示 Python 中给定范围(比如 0-10)内的一小组整数。在这种情况下,效率意味着快速构建(来自未排序的列表)、快速查询(每个集合上的几个查询)和合理快速构建排序版本(可能每十个集合一次左右)。先验的候选人正在使用 Python 的内置集合类型(快速查询),使用排序数组(可能更快地构造?),或使用位数组(如果我在 C 中,一切都快......但我怀疑 Python 会高效(?))。关于选择哪一个有什么建议吗?

谢谢。