gpt4 book ai didi

qt - 如何解压 QByteArray 中的 32 位整数?

转载 作者:行者123 更新时间:2023-12-01 19:35:03 24 4
gpt4 key购买 nike

我正在使用串行通信,我在 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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com