如何从qint值获取QBitArray?我需要更改一些数字位,所以我想使用QBitArray。
答案 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