Я читаю байтовый массив (2 байта с прямым порядком байтов) с Qt
QByteArray a = data.mid(cellNumber, 2);
int16 res = qFromBigEndian<qint16>(a);
и хочу получить int16. Он работает правильно, но медленно.
Если я использую
std::bitset<16> b0(a[0]);
std::bitset<16> b1(a[1]);
qint16 b = (b0 << 8) | (b1 << 0);
, результат будет неверным. Причина следующая:
00000001 a0
10101011 a1
00000000 00000001 b0 correct
11111111 10101011 b1 not correct, why does it fill with 1? (should be 00000000 10101011)
-----------------
11111111 10101011 wrong!
00000001 10101011 this would be correct
Кто-нибудь знает, что я делаю не так?