代码之家  ›  专栏  ›  技术社区  ›  daniels

将Qbytearray转换为Quint16

qt
  •  3
  • daniels  · 技术社区  · 14 年前

    我有以下libpurple的c宏:

    #define yahoo_get16(buf) ((((*(buf))<<8)&0xff00) + ((*((buf)+1)) & 0xff))
    

    我怎样才能把它写成一个函数,它将得到一个qbytearray作为参数,并使用上面C宏中的算法重试一个五分之一16的值?

    我问了一个类似的问题,将从Quint16转换为Qbytearray here 所以基本上,我现在要做的是,和这个函数相反。

    谢谢。

    3 回复  |  直到 14 年前
        1
  •  3
  •   Community CDub    8 年前

    QDataStream QByteArray

    QDataStream dataStream(yourByteArray);
    quint16 foo;
    dataStream >> foo;
    

    question

        2
  •  4
  •   Stephen Chu    14 年前

    qFromBigEndian

    QByteArray bytes;
    ...
    quint16 result = qFromBigEndian<quint16>((uchar*)bytes.data());
    
        3
  •  2
  •   user362638    14 年前

    QDataStream dataStream(yourByteArray);
    quint8 byte0;
    quint8 byte1;
    dataStream >> byte0 >> byte1;
    quint16 result = (byte0 << 8) + byte1;