我正在寻找一种转移QByteArray的方法。
QByteArray statusByte = QByteArray::fromHex("40"); // 0100 0000我需要实现的是通过位移位将statusByte转换为0x20。由于我不能直接转换QByteArray,那么实现移位的最简单方法是什么?
发布于 2014-02-10 16:13:17
当您谈论单个字节时,位移位不是一个问题,这是微不足道的(我不知道为什么您声称这是不可能的)。
QByteArray statusByte = QByteArray::fromHex("40");
statusByte[0] = statusByte[0]>>1;
statusByte[0]>>=1; // this should also work如果您有多个字节,那么它就更复杂了!
发布于 2014-02-10 15:42:17
如果您只想从一个字节的十六进制表示中获得一个数字(字节)值,而不是多个字节,则不需要真正的字节数组。
#if 1
// Qt 5, C++11 compilers
quint8 byte = QStringLiteral("40").toInt(nullptr, 16);
#endif
#if 0
// Qt 5, pre-C++11 compilers
quint8 byte = QStringLiteral("40").toInt(NULL, 16);
#endif
#if 0
// Qt 4
quint8 byte = QByteArray("40").toInt(NULL, 16);
#endif
byte >>= 1;
Q_ASSERT(byte == 0x20); // this is for demonstration only如果你需要同时移动多个字节,当然这也是可能的-请修正你的问题以明确这一点。
https://stackoverflow.com/questions/21679522
复制相似问题