2010-07-23 109 views
3

我想使用qFromBigEndian從udp套接字接收的字節流中讀取32位int。編譯錯誤使用qFromBigEndian

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

編譯本提供了以下錯誤: 錯誤:無效的轉換,從 'UCHAR *' 到 'qint32'

Qt文檔說:

牛逼qFromBigEndian(常量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.

顯然我做的事情有點傻,我已經把我的頭埋在了恥辱之中。有人能解釋我明顯的錯誤嗎?

回答

6

請注意,qFromBigEndian(const uchar *src)是一個函數模板。

你錯過了模板參數,使用

addr = qFromBigEndian<qint32>(data); 

相反,如預期的東西會工作。

+0

非常感謝。現在已經排序了。 – giles123 2010-07-23 11:10:44

+0

@ gillez:不客氣,隨時接受答案。 – 2010-07-23 11:14:25