使用 qFromBigEndian 从 Char 转换为 Int 说:"No matching function for call to"

Converting from Char to Int with qFromBigEndian says: "No matching function for call to"

我正在尝试从 QTcpSocket 读取传入数据,但出现错误:

error: no matching function for call to 'qFromBigEndian(char [4])'
         qint32 peekedSize = qFromBigEndian<qint32> (buffer);  

我做错了什么?

这是我的功能:

void TcpServer::readIncomingData(){
    if(mDebug)
        qDebug() << "readIncomingData()";

    QTcpSocket * tcpSocket = (QTcpSocket*)sender();

    while(true){
        if (tcpSocket->bytesAvailable() < 4){
            break;
        }
        char buffer[4];
        tcpSocket->peek(buffer, 4);
        qint32 peekedSize = qFromBigEndian<qint32> (buffer);
        if (peekedSize==0xffffffffu) // null string
            peekedSize = 0;
        peekedSize += 4;

        QString str;
        QDataStream(tcpSocket) >> str;
        emit stringHasBeenRead(str);
    }
}

我已经包含了 headers:

#include <QtNetwork>
#include <QtEndian>
#include <QtCore>
#include <QDataStream>
#include <QtGlobal>   

但仍然会出现同样的错误。

此外,在 .pro 文件中我有:

QT       += core gui network

根据 Qt 文档 qFromBigEndian() 函数参数类型必须是 const uchar *http://doc.qt.io/qt-5/qtendian.html#qFromBigEndian

试试这个:

qint32 peekedSize = qFromBigEndian<qint32>((const uchar*)&buffer);