Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - wofdy

#1
Hola, por fa, ayudenme a convertir el siguiente codigo que esta hecho en C, quiero pasarlo a visual basic 6. sirve para convertir un texto a formato PDU, y viceversa.

/* Transforma un texto normal (pchOriginal) en PDU (pchTransformado) devolviendo pchTransformado*/
char *formatoMensaje(char *pchOriginal, char *pchTransformado)
{
    char pchTablaHex[]={'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'};
    unsigned char chrCaracter;
    int intContador;
    int intIndice;
    int intTamano;
    int intMascara;
    int intDesplaza;

    intTamano = strlen(pchOriginal);
    intMascara = 1;
    intContador = 0;
    intIndice = 2;
    strcpy(pchTransformado,"00");
    intDesplaza = 7;

    while(intContador < intTamano)
    { 
        chrCaracter = ((*(pchOriginal + intContador + 1) & intMascara) << intDesplaza) + (*(pchOriginal + intContador) >> (7 - intDesplaza)); 
        pchTransformado[intIndice] = pchTablaHex[(chrCaracter & 0xF0) >> 4]; 
        intIndice++; 
        pchTransformado[intIndice] = pchTablaHex[chrCaracter & 0x0F]; 
        intIndice++; 
        intContador++; 
        intMascara <<= 1; 
        intMascara++ ; 
        intDesplaza--; 
        if(intDesplaza == -1) 
        {   
            intMascara = 1;   
            intDesplaza = 7;   
            intIndice -= 2; 
        }
    }

    pchTransformado[intIndice] = '';

    chrCaracter=(char)intTamano;
    pchTransformado[0] = pchTablaHex[(chrCaracter & 0xF0) >> 4];
    pchTransformado[1] = pchTablaHex[chrCaracter & 0x0F];

    return pchTransformado;
}

/* Transforma un texto PDU (pchOriginal) en texto normal (pchTransformado) devolviendo pchTransformado*/
char *decodificaMensaje(char *pchOriginal, char *pchTransformado)
{
    char pchLetras[5];
    unsigned char chrCaracter;
    int intTamano;
    int intContador;
    int intArrastre;
    int intDesplaza;
    int intIndice;
    int intMascara;

    intMascara = 128;
    intIndice = intContador = intArrastre = intDesplaza = 0;

    strcpy(pchLetras, "0x");
    strncat(pchLetras, pchOriginal + intIndice, 2);
    sscanf(pchLetras, "%x", &intTamano);

    intIndice += 2;

    while(intContador < intTamano)
    { 
        strcpy(pchLetras, "0x"); 
        strncat(pchLetras, pchOriginal + intIndice, 2); 
        sscanf(pchLetras, "%x", &chrCaracter); 
        pchTransformado[intContador] = ((chrCaracter & ~intMascara) << intDesplaza) + intArrastre; 
        intArrastre=(chrCaracter & intMascara) >> (7 - intDesplaza); 
        intIndice += 2; 
        intMascara >>= 1; 
        intMascara += 128; 
        intDesplaza++; 
        if(intMascara == 255) 
        {   
            intContador++;   
            pchTransformado[intContador] = chrCaracter >> 1;   
            intMascara = 128;   
            intDesplaza = intArrastre = 0; 
        }
        ++intContador;
    }

    pchTransformado[intContador] = '';

    return pchTransformado;