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;
/* 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;