mirror of
https://github.com/romixlab/qmsgpack.git
synced 2026-02-08 08:05:40 +01:00
unpacking is partially done
This commit is contained in:
27
msgpack.cpp
27
msgpack.cpp
@@ -1,29 +1,14 @@
|
||||
#include "msgpack.h"
|
||||
#include <QDebug>
|
||||
#include "private/msgpack_p.h"
|
||||
|
||||
QVariantList MsgPack::deserialize(const QByteArray &data)
|
||||
QVariant MsgPack::deserialize(const QByteArray &data)
|
||||
{
|
||||
QVariantList d;
|
||||
int i = 0;
|
||||
|
||||
quint8 *p = (quint8 *)data.data();
|
||||
while (i < data.size()) {
|
||||
if (p[i] <= 127) { // positive fixint 0x00 - 0x7f
|
||||
quint32 val = (quint32)p[i];
|
||||
d.append(QVariant(val));
|
||||
i += 1;
|
||||
}
|
||||
if (p[i] >= 0xe0) { // negative fixint 0xe0 - 0xff
|
||||
quint8 val8 = (quint8)p[i];
|
||||
val8 &= ~((1 << 7) | (1 << 6) | (1 << 5));
|
||||
qint32 val = 31 - val8;
|
||||
val ^= 0xffffffff;
|
||||
d.append(QVariant((qint32)val));
|
||||
i += 1;
|
||||
}
|
||||
quint8 *end = p + data.size() - 1;
|
||||
qDebug() << "deserialize size:" << data.size();
|
||||
|
||||
MsgPackPrivate::unpack(p, end);
|
||||
|
||||
}
|
||||
|
||||
return d;
|
||||
return MsgPackPrivate::unpack(p, end);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user