标签: bitset

将字节数组转换为Bitset

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

不幸的是,看起来Bitset只支持以下构造函数:

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

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

c++ byte bitset

7
推荐指数
1
解决办法
1万
查看次数

java.util.BitSet - set()无法按预期工作

我错过了一些痛苦明显的东西吗?或者世界上没有人真正使用java.util.BitSet?

以下测试失败:

@Test
public void testBitSet() throws Exception {
    BitSet b = new BitSet();
    b.set(0, true);
    b.set(1, false);
    assertEquals(2, b.length());
}
Run Code Online (Sandbox Code Playgroud)

我真的不清楚为什么我最终没有得到长度为2且值为10的BitSet.我偷看了java.util.BitSet的源代码,并且在随意检查时似乎无法在一点点之间做出充分的区分这已被设置为false并且有点从未设置为任何值...

(请注意,在构造函数中显式设置BitSet的大小无效,例如:

BitSet b = new BitSet(2);
Run Code Online (Sandbox Code Playgroud)

java bit-manipulation bitset

7
推荐指数
2
解决办法
4200
查看次数

Java:计算java.util.BitSet中设置的位数

除了通常的"保持计数器"方法之外,任何计算BitSet中设置位数的快速方法?

java bitset

7
推荐指数
1
解决办法
6623
查看次数

在Java中实现C风格的位域

我有一个问题,我有点困惑,一位同事告诉我,这将是一个寻求帮助的好地方.

我试图在Java中实现C风格的位域.这是一个粗略的例子(此时我没有在我面前的实际代码).

typedef union
{
  typedef struct
  {
     unsigned short a :1;
     unsigned short b :1;
     unsigned short c :2;
     unsigned short d :10;
  } bitfield;

  unsigned short bitmap;
}example_bitfield;
Run Code Online (Sandbox Code Playgroud)

遗留代码中我有一些类似的样式位域.我需要为Java提供等效方法的原因是我正在研究将使用Java与使用UDP的其他遗留应用程序进行通信的代码.

我没有重写代码的选项.我知道这种方法不可移植,有字节序问题(和填充/对齐等),如果我能够重写代码,可以做得更好.不幸的是,我需要回答这个非常具体的问题.系统已关闭,因此我不需要担心编译器/操作系统等每一种可能的组合.

使用Java EnumSet的方法不起作用,因为我认为只允许每个值为一位.我需要能够打包值,例如占用10位的d值.

我知道Java Bitset但它有局限性.我使用的是旧版本的Java,因此我没有一些较新的Java Bitset方法(即可能肯定有帮助的valueOf方法).

有没有人有任何关于如何使这个尽可能易于管理的想法?我有超过10个位域需要为我的通信实现.

感谢您提供任何帮助!

java bitset bit-fields

7
推荐指数
2
解决办法
2万
查看次数

如何增加std :: bitset

如何std::bitset<128>在C++中实现增量?

因为bitset是128位长,所以我不能简单地做

std::bitset<128> set = std::bitset<128>();

set = std::bitset<128>(set.to_ulong() + 1ULL);
Run Code Online (Sandbox Code Playgroud)

c++ biginteger bitset

7
推荐指数
1
解决办法
3261
查看次数

为什么C/C++中没有单一的数据类型?

因为bool,它是8位而只有真和假,为什么它们不能使它成为单位.

而且我知道有bitset,但不是那么方便,我只是想知道为什么?

c c++ boolean bitset

7
推荐指数
2
解决办法
2万
查看次数

在std :: bitset和std :: vector <bool>之间转换

我有一个,std::bitset但现在我想在它上面使用STL算法.

我可以使用std::vector<bool>,但我喜欢std::bitset构造函数,我想要std::bitset按位操作.

我是否必须经历一个循环并将所有东西都std::vector<bool>填入使用STL算法,然后将其复制回std::bitset,或者有更好的方法吗?

c++ boolean vector bitset stl-algorithm

7
推荐指数
1
解决办法
3593
查看次数

从字节获取位

我有以下功能:

int GetGroup(unsigned bitResult, int iStartPos, int iNumOfBites)
{
 return (bitResult >> (iStartPos + 1- iNumOfBites)) & ~(~0 << iNumOfBites);
}
Run Code Online (Sandbox Code Playgroud)

该函数返回一个字节的位组.
也就是说,如果bitResult=102 (01100110)2, iStartPos=5, iNumOfBites=3
输出:2 (10)2
对于iStartPos=7, iNumOfBites=4
输出:3 (0110)2

我在寻找更好的方法/"友好"要做到这一点,即用bitset或类似的东西.
有什么建议吗?

c++ bitset c++11

7
推荐指数
1
解决办法
1099
查看次数

位串上的top-k查询的索引结构

给定位串数组(所有相同长度)和查询字符串Q找到top-k与Q最相似的字符串,其中字符串A和B之间的相似性被定义为A和B中的数字1,(操作并按位应用) .

我认为这个问题应该有一个经典的结果.

k很小,数百,而数亿的矢量数和矢量的长度是512或1024

algorithm indexing tree bitset

7
推荐指数
1
解决办法
159
查看次数

从long转换的C++ bitset构造函数的复杂性是什么?

我的猜测是O(n),其中n是no.比特.或者它是不变的?我的意思是它不应该只能从内存中复制这些位吗?

c++ time-complexity bitset std-bitset

7
推荐指数
1
解决办法
230
查看次数