作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在使用串行通信,我在 QByteArray
中接收到 32 位整数,以 4 个单独的字节(小端)打包。我尝试使用 QByteArray::toLong()
从 4 个字节中解压值,但转换失败并返回错误的数字:
quint8 packed_bytes[] { 0x12, 0x34, 0x56, 0x78 };
QByteArray packed_array { QByteArray(reinterpret_cast<char*>(packed_bytes),
sizeof(packed_bytes)) };
bool isConversionOK;
qint64 unpacked_value { packed_array.toLong(&isConversionOK) };
// At this point:
// unpacked_value == 0
// isConversionOK == false
预期的 unpacked_value
是 0x78563412(小端解包)。为什么转换失败?
最佳答案
您可以使用QDataStream
来读取二进制数据。
quint8 packed_bytes[] { 0x12, 0x34, 0x56, 0x78 };
QByteArray packed_array { QByteArray(reinterpret_cast<char*>(packed_bytes), sizeof(packed_bytes)) };
QDataStream stream(packed_array);
stream.setByteOrder(QDataStream::LittleEndian);
int result;
stream >> result;
qDebug() << QString::number(result,16);
关于qt - 如何解压 QByteArray 中的 32 位整数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36645331/
我是一名优秀的程序员,十分优秀!