tags:

views:

36

answers:

1

Hi,

I'm trying to use qFromBigEndian to read a 32-bit int from a byte stream received over a udp socket.

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

Compiling this gives the following error: error: invalid conversion from 'uchar*' to 'qint32'

The Qt documentation says:

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.

Obviously I'm doing something a bit silly and I am already hanging my head in shame. Can someone please explain my obvious mistake?

+2  A: 

Note that qFromBigEndian(const uchar *src) is a function template.

You're missing the template parameter, use

addr = qFromBigEndian<qint32>(data);

instead, and things will work as expected.

Greg S
Thanks very much. That's sorted now.
gillez
@gillez: You're welcome, feel free to accept the answer.
Greg S