Atraviesa cada elemento en QByteArray (un elemento consta de 2 bytes)

Si   QByteArraycada elemento de está compuesto por 2 bytes (por ejemplo, un entero de 16 bits), se puede recorrer de la siguiente manera:

QByteArray byteArray = ...;  // 假设已经初始化了 QByteArray 对象

// 确保字节数组的长度是偶数,因为每个元素使用两个字节
if (byteArray.size() % 2 == 0) {
    for (int i = 0; i < byteArray.size(); i += 2) {
        // 通过 QByteArray::mid() 方法获取两个字节的子数组
        QByteArray elementBytes = byteArray.mid(i, 2);

        // 将两个字节转换为相应的类型,例如 int16_t
        int16_t element;
        memcpy(&element, elementBytes.constData(), sizeof(int16_t));
        // 或者使用 qFromLittleEndian() 或 qFromBigEndian() 进行字节顺序转换
        // int16_t element = qFromLittleEndian<qint16>(elementBytes.constData());

        // 进行相应操作,例如打印元素值
        qDebug() << element;
    }
}

El código anterior atraviesa la matriz de bytes con un tamaño de paso de 2 a través de un bucle y utiliza mid()el método para obtener una subarreglo de dos bytes. Estos dos bytes se pueden memcpy()convertir al tipo correspondiente usando la función, por ejemplo int16_t, . qFromLittleEndian()También puede usar la función o proporcionada por Qt qFromBigEndian()para la conversión del orden de bytes.

Tenga en cuenta que este ejemplo asume que la longitud de la matriz de bytes es uniforme para garantizar que cada elemento consta de dos bytes. Si la longitud de la matriz de bytes no es uniforme, es posible que deba manejarla de manera adecuada según la situación real.

Supongo que te gusta

Origin blog.csdn.net/qq_26093511/article/details/131866896
Recomendado
Clasificación