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

C宏到C++QT

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

    我有以下libpurple yahoo插件中的C宏:

    #define yahoo_put16(buf, data) ( \
            (*(buf) = (unsigned char)((data)>>8)&0xff), \
            (*((buf)+1) = (unsigned char)(data)&0xff),  \
            2)
    

    我希望实现与类中的函数相同的方法,witch将接收一个作为参数的Quint16值,并将其作为qBytearray返回。 我有以下内容,但我似乎没有得到与上面宏相同的结果。

    QByteArray YahooPacket::packQuint16(quint16 value) const
    {
        QByteArray data;
    
        data.append(QByteArray::number((value >> 8) & 0xFF));
        data.append(QByteArray::number(value & 0xFF));
    
        return data;
    }
    

    如何实现我的功能?

    1 回复  |  直到 14 年前
        1
  •  2
  •   Arnold Spence    14 年前

    QByteArray::number() QByteArray

    QByteArray YahooPacket::packQuint16(quint16 value) const
    {
        QByteArray data;
    
        data.append(QByteArray(((char*)&value)+1,1));
        data.append(QByteArray((char*)&value,1));
    
        return data;
    }