将 QByteArray 转换为 quint16

dan*_*els 3 qt

我有来自 libpurple 的以下 C 宏:

#define yahoo_get16(buf) ((((*(buf))<<8)&0xff00) + ((*((buf)+1)) & 0xff))
Run Code Online (Sandbox Code Playgroud)

我如何将其编写为一个函数,该函数将获取 QByteArray 作为参数并使用上面 c 宏中的算法重新运行 quint16 值?

我已经问过一个类似的问题,它将从 quint16 转换为 QByteArray 所以基本上我现在想做的是该函数的相反操作。

谢谢。

Ste*_*Chu 6

您还可以使用qFromBigEndian

QByteArray bytes;
...
quint16 result = qFromBigEndian<quint16>((uchar*)bytes.data());
Run Code Online (Sandbox Code Playgroud)