C++ (Qt)void MyBuffer::readData( char * data, qint64 maxSize ){ qint64 result = 0, size = qMin(MAX_BUF_SIZE - pos(), maxSize); if (size) { result = QBuffer::readData(data, size); maxSize -= size; data += size; if (!maxSize || result < 0) return result; } if (maxSize) { seek(0); if (QBuffer::readData(data, maxSize) != maxSize) return -1; result += maxSize; }}
C++ (Qt)QVector <char> temp(dataSize);buf.seek(dataPos);buf.readData(&temp[0], dataSize);short * tempS = (short *) &temp[0]; // если 2 байта
C++ (Qt)struct Tag { int mType; // 8 или 16 бит qint64 mPos; // позиция в кольевом буфере qint64 mSize; // размер};QList <Tag> lstTag; void SaveInput( chat * data, qint64 size, int type ){// добавили тег данных CTag tag; tag.mType = type; tag.mPos = buffer.pos(); tag.mSize = size; lstTag.push_back(tag); // убираем перетерые теги while (lstTag.size() > 1) { if (TagIntersect(tag, lstTag[0])) lstTag.pop_front(); else break; } // пишем в кольцевой буфер buffer.writeData(data, size);}