【发布时间】:2016-09-03 05:03:28
【问题描述】:
有没有办法从十六进制的std::string 或QString 构造一个std::bitset,反之亦然,而无需执行二进制移位操作?我知道如何做到这一点,但我想知道是否可以使用 C++ 流或类似的东西来做到这一点。
这是我目前的代码(尽量避免受到版主的抨击):
QString data("aabbccddeeff");
QByteArray temp = QByteArray::fromHex(data.simplified().toLatin1());
QBitArray bits(temp.count()*8);
for(int i=0; i<temp.count(); ++i) {
for(int b=0; b<8;b++) {
bits.setBit( i*8+b, temp.at(i)&(1<<(7-b)) );
}
}
【问题讨论】:
-
得到的位的最大长度是多少?它是否比您平台上最宽的整数长?
-
@JohnZwinck 最多 128 位或 16 字节。
标签: c++ data-conversion qstring qbytearray std-bitset