我正在尝试使用qFromBigEndian从通过udp套接字接收的字节流中读取32位int。

void processData(uchar *data)
{
  qint32 addr;
  addr = qFromBigEndian(data);
}

进行编译会产生以下错误:
错误:从'uchar *'到'qint32'的无效转换

Qt文档说:

T qFromBigEndian(const uchar * src)
Reads a big-endian number from memory location src and returns the number in the host byte order representation. Note: Template type T can either be a qint16, qint32 or qint64.
显然我在做些愚蠢的事,我已经垂头丧气了。有人可以解释我明显的错误吗?

最佳答案

请注意,qFromBigEndian(const uchar *src)是功能模板。

您缺少模板参数,请使用

addr = qFromBigEndian<qint32>(data);

相反,一切都会按预期进行。

关于c++ - 使用qFromBigEndian编译错误,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3317543/

10-11 16:19