Entre C ++ tipo de datos int y una intercambiables byte

    byte m_ch [12];
    byte * p = m_ch;
    byte * PTEMP = m_ch; 

    int temp [3] = {NULL};
    byte ss [4] = {NULL};

tipo int corriente conversión byte byte:


    int pointx [3] = {123 465 789};

    for (int i = 0; i <3; i ++)
    {
        memcpy (p, y pointx [i], 4);
        p + = 4;
    }

m_ch [12] Es decir, después de la conversión del byte byte tipo de flujo


Transferencia de tipo byte byte int:

 

    for (int i = 0; i <3; i ++)
    {

        memcpy (ss, PTEMP, 4); // 22 copias de cuatro bytes (tipo int es de 4 bytes)

        // temp [i] = ss [0] y 0xFF; //方法一  
        // temp [i] | = ((ss [1] << 8) y 0xFF00);
        // temp [i] | = ((ss [2] << 16) y 0xFF0000);
        // temp [i] | = ((ss [3] << 24) y 0xFF000000);

        Método II // 
        temp [i] = * (int *) ss; // primero dos métodos (byte *) se convierten en puntero fuerte (int *) y entonces el valor del puntero a int

      // temp [i] = int ( * ss); // declaración error ss de tipo char 1 byte, ss expresado * (byte *) valor de tipo puntero, sacado del valor del tamaño del tamaño de tan sólo 1 byte valor, y un int es de 4 bytes, por lo tanto, la declaración irrazonable
        PTEMP + = 4;
    }

Si mal, que me haga saber! También está dispuesto a escuchar mejor consejo.

 

Publicado 15 artículos originales · elogios ganado 20 · Vistas a 10000 +

Supongo que te gusta

Origin blog.csdn.net/ZDT_zdh/article/details/82629364
Recomendado
Clasificación