我正在尋找一種方法來sbitshift QByteArray
。移位QBytearray?
QByteArray statusByte = QByteArray::fromHex("40"); // 0100 0000
什麼,我需要做到的,是通過位移獲得statusByte
到0x20
。由於我無法直接位移QByteArray
,實現這種轉變最簡單的方法是什麼?
我正在尋找一種方法來sbitshift QByteArray
。移位QBytearray?
QByteArray statusByte = QByteArray::fromHex("40"); // 0100 0000
什麼,我需要做到的,是通過位移獲得statusByte
到0x20
。由於我無法直接位移QByteArray
,實現這種轉變最簡單的方法是什麼?
當你談論單字節時,位移並不是問題,這是微不足道的(我不知道你爲什麼聲稱它是不可能的)。
QByteArray statusByte = QByteArray::fromHex("40");
statusByte[0] = statusByte[0]>>1;
statusByte[0]>>=1; // this should also work
如果你有多個字節,那麼它會更復雜!
如果您只想從一個字節的十六進制表示中獲取單個數字(字節)值,而不是多個字節,則不需要字節數組。
#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
如果需要位移位多個字節一次,當然它也有可能 - 請修改你的問題說清楚。