问题标签 [bitset]

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 投票
7 回答
20912 浏览

c - 如何将字节数组移动 12 位

我想将字节数组的内容向左移动 12 位。

例如,从这个类型的数组开始uint8_t shift[10]

我想将它向左移动 12 位,结果是:

0 投票
6 回答
14240 浏览

c++ - 将字节数组转换为位集

我有一个由随机数生成器生成的字节数组。我想把它放到 STL 位集中。

不幸的是,Bitset 似乎只支持以下构造函数:

  1. 一串 1 和 0,例如“10101011”
  2. 一个无符号长。(我的字节数组会更长)

我现在能想到的唯一解决方案是逐位读取字节数组并制作一个由 1 和 0 组成的字符串。有没有人有更有效的解决方案?

0 投票
2 回答
6041 浏览

c++ - 如何将位集数据写入文件?

我有一个 std::bitset 我想逐位写入文件,但是 fstream 的 write 函数当然不支持这个。除了使用字符串将每个 8 位组转换为 char 并编写它之外,我想不出另一种方法......

有谁知道好的方法吗?

0 投票
9 回答
13100 浏览

java - 将字节转换为位

我正在使用java。

我有一个字节数组(数组的每个位置都有 8 位),我需要做的是将数组的 2 个值放在一起并得到一个值。

我会尝试更好地解释自己;我正在从音频文件中提取音频数据。此数据存储在字节数组中。每个音频样本的大小为 16 位。如果数组是:

字节[] 音频数据;

我需要从样本 audioData[0] 和 audioData[1] 中获取 1 个值,以便获取 1 个音频样本。

谁能解释我如何做到这一点?

提前致谢。

0 投票
4 回答
425 浏览

c++ - 在 VC++ 中编译头文件时遇到问题

我刚刚重新组织了一个项目的代码,现在我遇到了我无法解决的错误。此标头包含在尝试编译的 .cpp 文件中。

我在声明 Entity::getBitMask() 时遇到了这些编译器错误:

错误 C2143:语法错误:缺少“;” 在'<'之前

错误 C2433:“Entity::bitset”:数据声明中不允许“虚拟”

错误 C4430:缺少类型说明符 - 假定为 int。注意:C++ 不支持默认整数

错误 C2238:';' 前面的意外标记

下一行也有更多类似的错误。似乎 bitset 没有被包括在内,但显然是?我不知道出了什么问题。WinMain.h 包含 windows.h,而 numDefs.h 不包含任何内容。

使用 MS Visual C++ 2008。

0 投票
3 回答
5105 浏览

c++ - 如何在c ++中减去两个位集

我有 2个位,每个位集存储 100 位。如何减去它们,将它们视为无符号数?

0 投票
4 回答
6390 浏览

java - 在java中将BitSet写入文件

我有一个 BitSet 并想将其写入文件 - 我遇到了一个使用 writeObject 方法使用 ObjectOutputStream 的解决方案。

我查看了 java API 中的 ObjectOutputStream,发现您可以编写其他东西(字节、整数、短等)

我试图检查类,所以我尝试使用以下代码将一个字节写入文件,但结果给了我一个 7 字节而不是 1 字节的文件

我的问题是文件中的前 6 个字节是什么?他们为什么在那里?

我的问题与 BitSet 有关,因为我不想开始将大量数据写入文件并意识到我在文件中插入了随机字节而不知道它们是什么。

这是代码:

谢谢你的帮助

阿夫纳

0 投票
3 回答
788 浏览

c++ - 在 C++ 中合并十六进制字符串的最佳方法?[大量编辑]

我有两个带有掩码的十六进制字符串,我想将它们合并为一个字符串值/掩码对。字符串可能有重叠的字节,但在应用掩码之后,没有重叠位应该与该位的值相矛盾,即 value1 = 0x0A mask1 = 0xFE 和 value2 = 0x0B, mask2 = 0x0F 基本上表示生成的合并必须具有上半字节全为 0,下半字节必须为 01011

我已经使用直接 c 完成了这项工作,将字符串转换为字节数组并将 memcpy'ing 转换为缓冲区作为原型。它已经过测试,似乎可以工作。但是,它丑陋且难以阅读,并且不会针对与特定位要求相矛盾的情况抛出异常。我考虑过使用位集,但是还有另一种可能不需要转换开销的方法吗?性能会很好,但并不重要。


编辑:更详细,虽然写这篇文章让我意识到我把一个简单的问题弄得太难了。但是,无论如何,它就在这里。

我得到了大量输入,它们是混合内容文档的二进制搜索。文档被分成页面,页面由 api 提供,一次提供一个页面。每个页面都需要使用提供的搜索词进行搜索。

在请求页面之前,我拥有所有搜索词。输入是表示十六进制数字的字符串(这就是我所说的十六进制字符串)以及一个掩码,用于指示输入十六进制字符串中的重要位。由于我预先获得了所有输入,因此我想改进对返回的每个页面的搜索。我想预处理将这些十六进制字符串合并在一起。为了使问题更有趣,每个字符串在它们必须出现的页面中都有一个可选的偏移量,并且缺少偏移量表示该字符串可以出现在请求的页面中的任何位置。所以,像这样:

如果给定的 Input 对象具有offset_present = false,则忽略分配给 offset 的任何值。如果 offset_present 为 false,那么它显然不能与其他输入合并。

为了使问题更有趣,我想报告一个输出,该输出提供有关所找到内容的信息(找到的 input_id、偏移量在哪里等)。合并一些输入(但不是其他输入)使这变得更加困难。

我曾考虑定义一个 CompositeInput 类,并且正在考虑将底层合并作为一个位集,但进一步阅读有关位集的内容让我意识到这并不是我真正的想法。我的经验不足使我放弃了复合的想法,并开始使用蛮力。当找到输入时,我必须跳过有关其他输入类型的一些详细信息,以及为输出收集的附加信息(例如,页码、段落号)。这是一个示例输出类:

如果我合并 N 个十六进制字符串,我会想要生成其中的 N 个,从而对用户隐藏任何合并细节。

0 投票
1 回答
523 浏览

grails - Grails:GORM 和 BitSet?

我在官方文档中没有看到任何关于不支持的持久性数据类型的内容,所以我假设应该处理 Groovy 语言中可用的类型。但是,对于以下域类:

我越来越:

2009-11-15 16:46:12,298 [main] 错误 context.ContextLoader - 上下文初始化失败 org.springframework.beans.factory.BeanCreationException:创建名为“messageSource”的 bean 时出错:bean 初始化失败;嵌套异常是 org.springframework.beans.factory.BeanCreationException:创建名为“transactionManager”的 bean 时出错:设置 bean 属性“sessionFactory”时无法解析对 bean“sessionFactory”的引用;嵌套异常是 org.springframework.beans.factory.BeanCreationException:创建名为“sessionFactory”的 bean 时出错:调用 init 方法失败;嵌套异常是 org.hibernate.MappingException:来自表 doc_group_permissions 的关联引用了一个未映射的类:java.util.BitSet

有没有人遇到过这个?

0 投票
2 回答
6343 浏览

java - Java中非常紧凑的位数组

我正在寻找一种在 Java 中存储密集可变长度位数组的非常紧凑的方法。现在,我正在使用,但对于大小为nBitSet的位向量,它似乎平均使用1.5*n 位的存储空间。通常,这不是问题,但在这种情况下,存储的位数组是应用程序内存占用的重要部分。所以,让它们变小一点真的很有帮助。

BitSet 所需的空间似乎是由于用于支持数据结构的 long 数组在每次扩展以容纳更多位时往往会翻倍:

我可以编写自己的 BitSet 替代实现,更保守地扩展后端数据结构。但是,如果我不需要的话,我真的很讨厌复制标准类库中已经存在的功能。