Qt 如何将整数转换为qbitarray?

Qt 如何将整数转换为qbitarray?,qt,Qt,如何从qint值获取QBitArray?我需要更改数字中的一些位,因此我想使用QBitArray。不是testet,但应该可以: qint value = 1337; QBitArray bits; QDataStream stream; stream << value; bits << stream; qint值=1337; qbit阵列位; QDataStream流; stream如果您只想更改一些位,QBitArray太过分了 int bitmask = 1 &

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

不是testet,但应该可以:

qint value = 1337;
QBitArray bits;
QDataStream stream;

stream << value;
bits << stream;
qint值=1337;
qbit阵列位;
QDataStream流;

stream如果您只想更改一些位,
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

int-bitmask=1QBitArray的'>>'运算符要求位集大小为前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;
qbit数组位;
32号尺寸=32;
quint32值=1337;
QByteArray数据;
QDataStream流(数据,QIODevice::ReadWrite);
流>位;
事实上,我觉得QBitArray不是很有用。您可以尝试将std::vector用于可变大小,或将std::bitset用于固定大小(两者都来自STL库)

std::位集位(1337);
位[0]=1;

非常感谢您的回答,非常有用。实际上,由于我在大学工作的需要,我需要QBitArray。
std::bitset<32> bits(1337);
bits[0] = 1;