mirror of
https://github.com/romixlab/qmsgpack.git
synced 2026-02-05 23:05:12 +01:00
work in progress...
This commit is contained in:
29
msgpack.cpp
Normal file
29
msgpack.cpp
Normal file
@@ -0,0 +1,29 @@
|
||||
#include "msgpack.h"
|
||||
#include <QDebug>
|
||||
|
||||
QVariantList 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;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
return d;
|
||||
}
|
||||
Reference in New Issue
Block a user