如何将整数转换为qbitarray?

时间:2012-11-13 11:49:26

标签: qt

如何从qint值获取QBitArray?我需要更改一些数字位,所以我想使用QBitArray。

3 个答案:

答案 0 :(得分:2)

QBitArray'>>'运算符期望bitset size作为前4个字节,因此JustMaximumPower的snipper不会起作用。正确的数据流应如下所示:

QBitArray bits;

quint32 size = 32;
quint32 value = 1337;
QByteArray data;
QDataStream stream(data, QIODevice::ReadWrite);
stream << size << value;
stream.device()->seek(0);
stream >> bits;

实际上我发现QBitArray非常有用。你可以尝试std :: vector&lt; bool&gt;对于可变大小或std :: bitset用于固定大小(均来自STL库)。

std::bitset<32> bits(1337);
bits[0] = 1;

答案 1 :(得分:0)

不是测试,但应该工作:

qint value = 1337;
QBitArray bits;
QDataStream stream;

stream << value;
bits << stream;

答案 2 :(得分:-1)

如果您只想更改某些位,QBitArray就会过度。

int bitmask = 1 << 3; // let's change 4th bit
bitmask = 0x55555555; // or perhaps all odd bits

int number = 12345678;
number |= bitmask; // set to 1s
number &= ~bitmask; // set to 0s
number ^= bitmask; // negate what's already there