-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathpacket.cpp
64 lines (47 loc) · 1.14 KB
/
packet.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
#include "packet.h"
Packet::Packet(QString type, QByteArray data, QObject *parent) : QObject(parent)
{
_data = data;
_dataStream = new QDataStream(_data);
_type = type;
_size = 0;
_opcode = 0;
}
void Packet::readHeader()
{
*_dataStream >> _size;
if (type() == "CMSG")
{
qint8 unk1;
*_dataStream >> unk1;
}
*_dataStream >> _opcode;
}
template <typename T> T Packet::read()
{
T v;
*_dataStream >> v;
return v;
}
QString Packet::readString(quint16 length)
{
QByteArray bytes;
bytes.resize(length);
for (quint16 i = 0; i < length; ++i)
bytes[i] = readByte();
QString string = QString(bytes);
return string;
}
qint8 Packet::readByte() { return read<qint8>(); }
qint16 Packet::readShort() { return read<qint16>(); }
qint32 Packet::readInt() { return read<qint32>(); }
QString Packet::toHex()
{
QString format, hex;
int size = _data.size();
for (int i = 0; i < size; ++i)
format = format % hex.sprintf("%02X ", (quint8)_data.at(i));
if (_data.size() >= 1)
format.chop(1); //Remove last space
return format;
}