我有来自 libpurple yahoo 插件的以下 c 宏:
#define yahoo_put16(buf, data) ( \
(*(buf) = (unsigned char)((data)>>8)&0xff), \
(*((buf)+1) = (unsigned char)(data)&0xff), \
2)
我想实现与我的类中的函数相同的功能,它将接收 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;
}
我该如何实现我的功能?
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;
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)