diff --git a/src/core/Endian.cpp b/src/core/Endian.cpp index bf838abcb..3944bba2d 100644 --- a/src/core/Endian.cpp +++ b/src/core/Endian.cpp @@ -139,7 +139,7 @@ QByteArray int16ToBytes(qint16 num, QSysInfo::Endian byteOrder) qToLittleEndian(num, reinterpret_cast(ba.data())); } else { - qToBigEndian(num, reinterpret_cast(ba.data())); + qToBigEndian(num, reinterpret_cast(ba.data())); } return ba; @@ -175,6 +175,51 @@ QByteArray int64ToBytes(qint64 num, QSysInfo::Endian byteOrder) return ba; } +QByteArray uint16ToBytes(quint16 num, QSysInfo::Endian byteOrder) +{ + QByteArray ba; + ba.resize(2); + + if (byteOrder == QSysInfo::LittleEndian) { + qToLittleEndian(num, reinterpret_cast(ba.data())); + } + else { + qToBigEndian(num, reinterpret_cast(ba.data())); + } + + return ba; +} + +QByteArray uint32ToBytes(quint32 num, QSysInfo::Endian byteOrder) +{ + QByteArray ba; + ba.resize(4); + + if (byteOrder == QSysInfo::LittleEndian) { + qToLittleEndian(num, reinterpret_cast(ba.data())); + } + else { + qToBigEndian(num, reinterpret_cast(ba.data())); + } + + return ba; +} + +QByteArray uint64ToBytes(quint64 num, QSysInfo::Endian byteOrder) +{ + QByteArray ba; + ba.resize(8); + + if (byteOrder == QSysInfo::LittleEndian) { + qToLittleEndian(num, reinterpret_cast(ba.data())); + } + else { + qToBigEndian(num, reinterpret_cast(ba.data())); + } + + return ba; +} + bool writeInt16(qint16 num, QIODevice* device, QSysInfo::Endian byteOrder) { QByteArray ba = int16ToBytes(num, byteOrder); diff --git a/src/core/Endian.h b/src/core/Endian.h index 0cea617c6..0b969b3ed 100644 --- a/src/core/Endian.h +++ b/src/core/Endian.h @@ -42,6 +42,9 @@ namespace Endian { QByteArray int16ToBytes(qint16 num, QSysInfo::Endian byteOrder); QByteArray int32ToBytes(qint32 num, QSysInfo::Endian byteOrder); QByteArray int64ToBytes(qint64 num, QSysInfo::Endian byteOrder); + QByteArray uint16ToBytes(quint16 num, QSysInfo::Endian byteOrder); + QByteArray uint32ToBytes(quint32 num, QSysInfo::Endian byteOrder); + QByteArray uint64ToBytes(quint64 num, QSysInfo::Endian byteOrder); bool writeInt16(qint16 num, QIODevice* device, QSysInfo::Endian byteOrder); bool writeInt32(qint32 num, QIODevice* device, QSysInfo::Endian byteOrder);