【发布时间】:2016-08-07 07:39:56
【问题描述】:
我正在使用串行通信,我在 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(小端解包)。为什么转换失败?
【问题讨论】:
标签: qt type-conversion qt5 unpack qbytearray