如何从 qint 值中获取 QBitArray?我需要更改一些位数,所以我想使用 QBitArray 。
问问题
6893 次
3 回答
2
QBitArray 的 '>>' 运算符期望位集大小为前 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<bool> 用于可变大小或 std::bitset 用于固定大小(均来自 STL 库)。
std::bitset<32> bits(1337);
bits[0] = 1;
于 2015-01-12T14:15:35.030 回答
0
不是 testet 但应该可以工作:
qint value = 1337;
QBitArray bits;
QDataStream stream;
stream << value;
bits << stream;
于 2012-11-13T12:17:30.707 回答
-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
于 2012-11-13T12:18:57.037 回答